Projekt IoT: Difference between revisions
Line 79: | Line 79: | ||
===== Self Compiled ===== | ===== Self Compiled ===== | ||
domoticz.service | |||
<nowiki> | |||
[Unit] | |||
Description=Domoticz 4 (JoBa Edition) | |||
Wants=nss-lookup.target | |||
After=network.target | |||
[Service] | |||
PIDFile=/run/domoticz/domoticz.pid | |||
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443 | |||
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443 | |||
ExecReload=/bin/kill -HUP $MAINPID | |||
ExecStop=/bin/kill -KILL $MAINPID | |||
User=domoticz | |||
Group=domoticz | |||
[Install] | |||
WantedBy=multi-user.target | |||
</nowiki> | |||
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix | |||
<nowiki> | |||
# | |||
# spec file for package domoticz | |||
# | |||
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. | |||
# Copyright (c) 2014-2016 Guillaume GARDET <guillaume@opensuse.org> | |||
# Copyright (c) 2018 Joachim Banzhaf <joachim.banzhaf@gmail.com> | |||
# | |||
# All modifications and additions to the file contributed by third parties | |||
# remain the property of their copyright owners, unless otherwise agreed | |||
# upon. The license for this file, and modifications and additions to the | |||
# file, is the same license as for the pristine package itself (unless the | |||
# license for the pristine package is not an Open Source License, in which | |||
# case the license is the MIT License). An "Open Source License" is a | |||
# license that conforms to the Open Source Definition (Version 1.9) | |||
# published by the Open Source Initiative. | |||
# Please submit bugfixes or comments via http://bugs.opensuse.org/ | |||
# | |||
# | |||
# Hash can be found on Github, select tag, look for "Last commit xxxx" under the Clone/Download button | |||
# | |||
%define APPVERSION 9700 | |||
%define APPHASH 2772d9f | |||
Name: domoticz | |||
Summary: Domoticz is a very light weight Home Automation System | |||
Version: 4.%{APPVERSION} | |||
Release: 0 | |||
License: GPL-3.0+ | |||
Group: Productivity/Other | |||
Url: http://www.domoticz.com/ | |||
Source0: %{name}-%{version}.tar.gz | |||
Source1: domoticz.service | |||
BuildRoot: %{_tmppath}/%{name}-%{version}-build | |||
BuildRequires: cmake | |||
BuildRequires: gcc-c++ | |||
BuildRequires: pkgconfig | |||
BuildRequires: fdupes | |||
BuildRequires: openssl-devel | |||
BuildRequires: python3-devel | |||
BuildRequires: boost-devel >= 1.55 | |||
BuildRequires: curl-devel | |||
BuildRequires: libusb-devel | |||
BuildRequires: openzwave | |||
BuildRequires: libopenzwave-devel | |||
BuildRequires: libudev-devel | |||
BuildRequires: git | |||
BuildRequires: sqlite | |||
BuildRequires: sqlite-devel | |||
BuildRequires: python3-devel | |||
Requires: sqlite | |||
Requires: python3-devel | |||
BuildRequires: systemd-rpm-macros | |||
%{?systemd_requires} | |||
%description | |||
Domoticz is a very light weight Home Automation System that lets you monitor and | |||
configure various devices like: Lights, Switches, various sensors/meters like | |||
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. | |||
Notifications/Alerts can be sent to any mobile device. Supported platforms: | |||
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com | |||
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows | |||
%prep | |||
%setup -q | |||
%build | |||
cat > appversion.default << EOL | |||
#define APPVERSION %{APPVERSION} | |||
#define APPHASH "%{APPHASH}" | |||
#define APPDATE `date +%s` | |||
EOL | |||
# | |||
mkdir build/ | |||
pushd build/ | |||
cmake .. \ | |||
-DCMAKE_BUILD_TYPE=Release \ | |||
-DUSE_STATIC_BOOST=OFF \ | |||
-DUSE_STATIC_OPENZWAVE=OFF | |||
make | |||
popd | |||
%install | |||
pushd build/ | |||
%make_install | |||
popd | |||
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service | |||
# | |||
# Cleanup | |||
# | |||
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp | |||
# | |||
%fdupes -s %{buildroot}/opt | |||
# | |||
# Setup system | |||
# | |||
mkdir -p %{buildroot}/run/domoticz | |||
mkdir -p %{buildroot}/var/log | |||
touch %{buildroot}/var/log/domoticz.log | |||
# install /usr/lib/tmpfiles.d/domoticz.conf | |||
mkdir -p %{buildroot}%{_tmpfilesdir} | |||
cat > %{buildroot}%{_tmpfilesdir}/domoticz.conf <<EOF | |||
# domoticz needs existing /run/domoticz/ to create domoticz.pid there | |||
# See tmpfiles.d(5) for details | |||
d /run/domoticz 0755 domoticz domoticz - | |||
EOF | |||
%pre | |||
getent group domoticz >/dev/null || groupadd -r domoticz | |||
getent passwd domoticz >/dev/null || \ | |||
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \ | |||
-c "domoticz daemon account" domoticz | |||
%if 0%{?_unitdir:1} | |||
%service_add_pre domoticz.service | |||
%endif | |||
%post | |||
%if 0%{?_unitdir:1} | |||
%service_add_post domoticz.service | |||
%endif | |||
%preun | |||
%if 0%{?_unitdir:1} | |||
%service_del_preun domoticz.service | |||
%endif | |||
%postun | |||
%if 0%{?_unitdir:1} | |||
%service_del_postun domoticz.service | |||
%endif | |||
%files | |||
%defattr(-,root,root) | |||
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/ | |||
%dir %attr(0755,domoticz,domoticz) /run/domoticz/ | |||
%attr(-,domoticz,domoticz) /opt/domoticz/* | |||
%{_tmpfilesdir}/domoticz.conf | |||
%{_unitdir}/%{name}.service | |||
%attr(0644,domoticz,domoticz) /var/log/domoticz.log | |||
%changelog | |||
</nowiki> | |||
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls | |||
set(OPENSSL_SSL_LIBRARY "/usr/lib64/libssl.so") | |||
set(OPENSSL_CRYPTO_LIBRARY "/usr/lib64/libcrypto.so") | |||
v=4.9700 | |||
zypper in libopenzwave-devel libopenssl-devel libcrypto41 | |||
mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES | |||
wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip | |||
unzip domoticz.zip | |||
tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/ | |||
rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec | |||
sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm | |||
sudo systemctl start domoticz.service | |||
==== Configuration ==== | ==== Configuration ==== |
Revision as of 22:09, 12 July 2018
IoT - Internet of Things
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers
- Arduino Nano with 433 MHz data transfer
- ESP-01 for shutter control
- ESP-12 for LED switch
- ESP-12 for laundry room air control
- SonOff with own firmware and tasmota devices
https://github.com/arendst/Sonoff-Tasmota/wiki
Arduino IDE Inofficial Boards
look here for an overview:
ATTiny
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore
- Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf
- Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf
- Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg
Wiring
- Vcc can also be 3.3V
- C1 can have bigger capacity for unstable voltage
- R1 can be higher values
Programmer
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE. Ignore warning "avrdude: warning: cannot set sck period. please check for usbasp firmware update.".
Numbering of Connector is
1 3 5 7 9 2 4 6 8 10
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck
New chip needed 0.5MHz for correct timing with delay()
Needed to add this udev rule
echo 'SUBSYSTEMS=="usb", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05dc", GROUP="dialout", MODE="0660"' | sudo sh -c 'cat >/etc/udev/rules.d/50-USBasp.rules'
ESP8266
https://github.com/esp8266/Arduino
Domoticz
This is a home automation system that is natively supported by tasmota devices via mqtt
Installation
Old Repo
- Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&package=domoticz
- Install package domoticz
- Create system user
sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz
- Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)
[Service] ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db WorkingDirectory=/home/domoticz User=domoticz Group=domoticz Restart=always
- Activate new service file, start domoticz and check status
sudo systemctl daemon-reload sudo systemctl enable domoticz sudo systemctl start domoticz sudo systemctl status domoticz
Self Compiled
domoticz.service
[Unit] Description=Domoticz 4 (JoBa Edition) Wants=nss-lookup.target After=network.target [Service] PIDFile=/run/domoticz/domoticz.pid #ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443 ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443 ExecReload=/bin/kill -HUP $MAINPID ExecStop=/bin/kill -KILL $MAINPID User=domoticz Group=domoticz [Install] WantedBy=multi-user.target
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix # # spec file for package domoticz # # Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2014-2016 Guillaume GARDET <guillaume@opensuse.org> # Copyright (c) 2018 Joachim Banzhaf <joachim.banzhaf@gmail.com> # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # # # Hash can be found on Github, select tag, look for "Last commit xxxx" under the Clone/Download button # %define APPVERSION 9700 %define APPHASH 2772d9f Name: domoticz Summary: Domoticz is a very light weight Home Automation System Version: 4.%{APPVERSION} Release: 0 License: GPL-3.0+ Group: Productivity/Other Url: http://www.domoticz.com/ Source0: %{name}-%{version}.tar.gz Source1: domoticz.service BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: pkgconfig BuildRequires: fdupes BuildRequires: openssl-devel BuildRequires: python3-devel BuildRequires: boost-devel >= 1.55 BuildRequires: curl-devel BuildRequires: libusb-devel BuildRequires: openzwave BuildRequires: libopenzwave-devel BuildRequires: libudev-devel BuildRequires: git BuildRequires: sqlite BuildRequires: sqlite-devel BuildRequires: python3-devel Requires: sqlite Requires: python3-devel BuildRequires: systemd-rpm-macros %{?systemd_requires} %description Domoticz is a very light weight Home Automation System that lets you monitor and configure various devices like: Lights, Switches, various sensors/meters like Temperature, Rain, Wind, UV, Electra, Gas, Water and much more. Notifications/Alerts can be sent to any mobile device. Supported platforms: Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows %prep %setup -q %build cat > appversion.default << EOL #define APPVERSION %{APPVERSION} #define APPHASH "%{APPHASH}" #define APPDATE `date +%s` EOL # mkdir build/ pushd build/ cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DUSE_STATIC_BOOST=OFF \ -DUSE_STATIC_OPENZWAVE=OFF make popd %install pushd build/ %make_install popd install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service # # Cleanup # rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp # %fdupes -s %{buildroot}/opt # # Setup system # mkdir -p %{buildroot}/run/domoticz mkdir -p %{buildroot}/var/log touch %{buildroot}/var/log/domoticz.log # install /usr/lib/tmpfiles.d/domoticz.conf mkdir -p %{buildroot}%{_tmpfilesdir} cat > %{buildroot}%{_tmpfilesdir}/domoticz.conf <<EOF # domoticz needs existing /run/domoticz/ to create domoticz.pid there # See tmpfiles.d(5) for details d /run/domoticz 0755 domoticz domoticz - EOF %pre getent group domoticz >/dev/null || groupadd -r domoticz getent passwd domoticz >/dev/null || \ useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \ -c "domoticz daemon account" domoticz %if 0%{?_unitdir:1} %service_add_pre domoticz.service %endif %post %if 0%{?_unitdir:1} %service_add_post domoticz.service %endif %preun %if 0%{?_unitdir:1} %service_del_preun domoticz.service %endif %postun %if 0%{?_unitdir:1} %service_del_postun domoticz.service %endif %files %defattr(-,root,root) %dir %attr(0755,domoticz,domoticz) /opt/domoticz/ %dir %attr(0755,domoticz,domoticz) /run/domoticz/ %attr(-,domoticz,domoticz) /opt/domoticz/* %{_tmpfilesdir}/domoticz.conf %{_unitdir}/%{name}.service %attr(0644,domoticz,domoticz) /var/log/domoticz.log %changelog
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls
set(OPENSSL_SSL_LIBRARY "/usr/lib64/libssl.so") set(OPENSSL_CRYPTO_LIBRARY "/usr/lib64/libcrypto.so")
v=4.9700 zypper in libopenzwave-devel libopenssl-devel libcrypto41 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip unzip domoticz.zip tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/ rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm sudo systemctl start domoticz.service
Configuration
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz
- On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches
- For each tasmota device function (switch, temp/hum, ...) click on "virtual sensor" (on hardware page at dummy device entry)
- On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.
Cura Build
Prerequisites
git clone https://github.com/Ultimaker/Cura.git git clone https://github.com/Ultimaker/cura-build
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2
sudo zypper in gcc-fortran python3 python3-pyserial python3-numpy python3-opengl python3-setuptools libstdc++-devel openssl openblas-devel gtk3-devel webkit2gtk3-devel gstreamer-devel python-wxWidgets-3_0 python-wxWidgets-3_0-devel # pip3 install F2PY
F2PY not found -> build may fail
Installation
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :(
Use app container for now (but how to use core functions directly?)
Feinstaubsensor
https://luftdaten.info/feinstaubsensor-bauen/
- NodeMCU
- SDS011
- optional: BME280 (probably needs code change since they use DHT22)
- USB powersupply
- USB cable
- 2 x Marley HT DN75, 87°
- Gaze als Insektenschutz
- 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren
- ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)
Cost ~25€
RFID Demo
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino
What is needed for an access control demo (might send mqtt status):
- ESP8266 as central unit
- RFID reader/writer
- 1 RFID Card (Master)
- n RFID Tags (ID "Cards")
- USB Cable MicroUSB
- LED for access granted or added: green
- LED for access denied or removed or error: red (red+green: master mode)
- Dupont cabling for reader (~10 f-f)
- Breadboard
Cost ~5€