<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://banzhaf.chickenkiller.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=0%3A0%3A0%3A0%3A0%3A0%3A0%3A1</id>
	<title>JoBaPedia - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://banzhaf.chickenkiller.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=0%3A0%3A0%3A0%3A0%3A0%3A0%3A1"/>
	<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php/Special:Contributions/0:0:0:0:0:0:0:1"/>
	<updated>2026-07-06T04:36:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_Joachims_Minecraftserver&amp;diff=14737</id>
		<title>Projekt Joachims Minecraftserver</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_Joachims_Minecraftserver&amp;diff=14737"/>
		<updated>2020-11-29T17:58:18Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Joachims Minecraftserver */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Joachims Minecraftserver =&lt;br /&gt;
&lt;br /&gt;
Neue Spigot Version? &amp;gt;/usr/local/spigot/README.txt&lt;br /&gt;
&lt;br /&gt;
SREV=1.16.3&lt;br /&gt;
PORT=25565&lt;br /&gt;
SDIR=&amp;quot;spigot-v$SREV&amp;quot;&lt;br /&gt;
BASEDIR=/usr/local/spigot&lt;br /&gt;
mkdir -p &amp;quot;$BASEDIR/$SDIR&amp;quot;&lt;br /&gt;
cd &amp;quot;$BASEDIR/$SDIR&amp;quot;&lt;br /&gt;
wget -O BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar&lt;br /&gt;
java -jar BuildTools.jar --rev &amp;quot;$SREV&amp;quot;&lt;br /&gt;
# java -jar BuildTools.jar&lt;br /&gt;
mkdir run&lt;br /&gt;
screen -S spigot&lt;br /&gt;
cd run&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;start.sh&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
java -Xms1024M -Xmx2048M -XX:MaxPermSize=256M -jar spigot.jar&lt;br /&gt;
EOF&lt;br /&gt;
chmod +x start.sh&lt;br /&gt;
ln -sf ../craftbukkit-*.jar craftbukkit.jar&lt;br /&gt;
ln -sf ../spigot-*.jar spigot.jar&lt;br /&gt;
./start.sh&lt;br /&gt;
sed -i s/false/true/ eula.txt&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;server.properties&lt;br /&gt;
difficulty=3&lt;br /&gt;
snooper-enabled=false&lt;br /&gt;
server-port=$PORT&lt;br /&gt;
level-name=world&lt;br /&gt;
motd=Joba&#039;s Spigot $SREV Server&lt;br /&gt;
EOF&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/systemd/system/spigot-$SREV.service&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Spigot v$SREV Minecraft Server&lt;br /&gt;
RequiresMountsFor=$BASEDIR&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=forking&lt;br /&gt;
User=joachim&lt;br /&gt;
ExecStart=/usr/bin/screen -d -m -L -S spigot-v$SREV java -Xms2048M -Xmx3072M -XX:MaxPermSize=256M -jar spigot.jar&lt;br /&gt;
WorkingDirectory=$BASEDIR/$SDIR/run&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
EOF&lt;br /&gt;
systemctl daemon-reload&lt;br /&gt;
systemctl start spigot-$SREV.service&lt;br /&gt;
sleep 1&lt;br /&gt;
systemctl status spigot-$SREV.service&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Live Map ==&lt;br /&gt;
&lt;br /&gt;
=== direkt ===&lt;br /&gt;
&lt;br /&gt;
* Von außerhalb [[http://banzhaf.homeip.net:8123/ Remote Livemap]]&lt;br /&gt;
* Bei mir zuhause [[http://job1:8123/ Lokale Livemap]]&lt;br /&gt;
&lt;br /&gt;
=== mit Webserver (Test) ===&lt;br /&gt;
&lt;br /&gt;
* Von außerhalb [[http://banzhaf.homeip.net/minecraft/livemap/ Remote Livemap]]&lt;br /&gt;
* Bei mir zuhause [[http://job4/minecraft/livemap/ Lokale Livemap]]&lt;br /&gt;
&lt;br /&gt;
== Hilfe ==&lt;br /&gt;
&lt;br /&gt;
[[Minecraft_Hilfe|Kommandoübersicht]]&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
[[BukkitPlugins|Bukkit Plugins]]&lt;br /&gt;
&lt;br /&gt;
== Infos ==&lt;br /&gt;
&lt;br /&gt;
Hi,&lt;br /&gt;
&lt;br /&gt;
hier werd ich Infos zum Server reinschreiben, wenn ich welche habe.&lt;br /&gt;
&lt;br /&gt;
Bis dahin: verwende /help :)&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Hadoop_in_Docker&amp;diff=14674</id>
		<title>Hadoop in Docker</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Hadoop_in_Docker&amp;diff=14674"/>
		<updated>2020-10-29T23:29:03Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Bigtop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hadoop in Docker ==&lt;br /&gt;
&lt;br /&gt;
Protocol for Installation on OpenSuse 15.1&lt;br /&gt;
&lt;br /&gt;
=== Docker Intro ===&lt;br /&gt;
&lt;br /&gt;
First create btrfs fs on /var/lib/docker to get decent snapshot support, then&lt;br /&gt;
&lt;br /&gt;
 sudo zypper install docker python3-docker-compose&lt;br /&gt;
 sudo usermod -G docker -a $USER&lt;br /&gt;
 sudo systemctl enable docker&lt;br /&gt;
 sudo systemctl start docker&lt;br /&gt;
 sudo systemctl status docker&lt;br /&gt;
&lt;br /&gt;
You need to relogin or do ssh localhost to activate the group change. Then you can start shell in an opensuse image&lt;br /&gt;
&lt;br /&gt;
 docker run --name bigtop -it --entrypoint /bin/bash opensuse/leap:42.3&lt;br /&gt;
&lt;br /&gt;
If you exit and want to restart this container restart and attach&lt;br /&gt;
&lt;br /&gt;
 docker container restart bigtop&lt;br /&gt;
 docker attach bigtop&lt;br /&gt;
&lt;br /&gt;
If you want to start another shell in the running container&lt;br /&gt;
&lt;br /&gt;
 docker container exec -it bigtop /bin/bash&lt;br /&gt;
&lt;br /&gt;
If you dont know the name of the container, use this to list them all&lt;br /&gt;
&lt;br /&gt;
 docker ps -a&lt;br /&gt;
&lt;br /&gt;
If you want to add a volume to your existing container, that is not as easy as I thought&lt;br /&gt;
&lt;br /&gt;
 docker commit bigtop bigtop-image&lt;br /&gt;
 docker run --name bigtop2 -v /mountpoint -ti --entrypoint /bin/bash bigtop-image&lt;br /&gt;
&lt;br /&gt;
Once you know all is ok, you can replace the old container&lt;br /&gt;
&lt;br /&gt;
 docker rm bigtop&lt;br /&gt;
 docker rename bigtop2 bigtop&lt;br /&gt;
&lt;br /&gt;
Now you have a docker container where you can start bigtop setup in and know how to reconfigure it if something is misssing&lt;br /&gt;
&lt;br /&gt;
=== Bigtop ===&lt;br /&gt;
&lt;br /&gt;
Add repository to opensuse 42.3 (suggest to do that in docker image created above)&lt;br /&gt;
&lt;br /&gt;
 zypper in java-1_8_0-openjdk-1.8.0&lt;br /&gt;
 zypper ar https://artfiles.org/apache.org/bigtop/bigtop-1.4.0/repos/opensuse42.3/bigtop.repo&lt;br /&gt;
 zypper in bigtop-utils bigtop-jsvc bigtop-tomcat bigtop-groovy&lt;br /&gt;
 &lt;br /&gt;
Open ports 8080, 8009 and 8005 for the container and start /usr/lib/bigtop-tomcat/bin/catalina.sh run&lt;br /&gt;
&lt;br /&gt;
 docker run --name bigtop-catalina -p 8080:8080 -p 8005:8005 -p8009:8009 -ti --entrypoint /bin/bash bigtop-image /usr/lib/bigtop-tomcat/bin/catalina.sh run&lt;br /&gt;
&lt;br /&gt;
Check if tomcat is running fine by deploying a &amp;quot;hello world&amp;quot; war&lt;br /&gt;
&lt;br /&gt;
 zypper install wget&lt;br /&gt;
 cd /usr/lib/bigtop-tomcat&lt;br /&gt;
 mkdir -p webapps&lt;br /&gt;
 cd webapps&lt;br /&gt;
 wget https://tomcat.apache.org/tomcat-8.0-doc/appdev/sample/sample.war&lt;br /&gt;
&lt;br /&gt;
Tomcat should find the war file, expand and deploy it automatically. Find it at http://localhost:8080/sample&lt;br /&gt;
&lt;br /&gt;
Groovy that comes with bigtop uses utility which and needs a JDK. Install them&lt;br /&gt;
&lt;br /&gt;
 zypper install which java-1_8_0-openjdk-devel&lt;br /&gt;
 /usr/lib/bigtop-groovy/bin/groovy -version&lt;br /&gt;
&lt;br /&gt;
now what?&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Hadoop_in_Docker&amp;diff=14673</id>
		<title>Hadoop in Docker</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Hadoop_in_Docker&amp;diff=14673"/>
		<updated>2020-10-29T23:27:10Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Bigtop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Hadoop in Docker ==&lt;br /&gt;
&lt;br /&gt;
Protocol for Installation on OpenSuse 15.1&lt;br /&gt;
&lt;br /&gt;
=== Docker Intro ===&lt;br /&gt;
&lt;br /&gt;
First create btrfs fs on /var/lib/docker to get decent snapshot support, then&lt;br /&gt;
&lt;br /&gt;
 sudo zypper install docker python3-docker-compose&lt;br /&gt;
 sudo usermod -G docker -a $USER&lt;br /&gt;
 sudo systemctl enable docker&lt;br /&gt;
 sudo systemctl start docker&lt;br /&gt;
 sudo systemctl status docker&lt;br /&gt;
&lt;br /&gt;
You need to relogin or do ssh localhost to activate the group change. Then you can start shell in an opensuse image&lt;br /&gt;
&lt;br /&gt;
 docker run --name bigtop -it --entrypoint /bin/bash opensuse/leap:42.3&lt;br /&gt;
&lt;br /&gt;
If you exit and want to restart this container restart and attach&lt;br /&gt;
&lt;br /&gt;
 docker container restart bigtop&lt;br /&gt;
 docker attach bigtop&lt;br /&gt;
&lt;br /&gt;
If you want to start another shell in the running container&lt;br /&gt;
&lt;br /&gt;
 docker container exec -it bigtop /bin/bash&lt;br /&gt;
&lt;br /&gt;
If you dont know the name of the container, use this to list them all&lt;br /&gt;
&lt;br /&gt;
 docker ps -a&lt;br /&gt;
&lt;br /&gt;
If you want to add a volume to your existing container, that is not as easy as I thought&lt;br /&gt;
&lt;br /&gt;
 docker commit bigtop bigtop-image&lt;br /&gt;
 docker run --name bigtop2 -v /mountpoint -ti --entrypoint /bin/bash bigtop-image&lt;br /&gt;
&lt;br /&gt;
Once you know all is ok, you can replace the old container&lt;br /&gt;
&lt;br /&gt;
 docker rm bigtop&lt;br /&gt;
 docker rename bigtop2 bigtop&lt;br /&gt;
&lt;br /&gt;
Now you have a docker container where you can start bigtop setup in and know how to reconfigure it if something is misssing&lt;br /&gt;
&lt;br /&gt;
=== Bigtop ===&lt;br /&gt;
&lt;br /&gt;
Add repository to opensuse 42.3 (suggest to do that in docker image created above)&lt;br /&gt;
&lt;br /&gt;
 zypper in java-1_8_0-openjdk-1.8.0&lt;br /&gt;
 zypper ar https://artfiles.org/apache.org/bigtop/bigtop-1.4.0/repos/opensuse42.3/bigtop.repo&lt;br /&gt;
 zypper in bigtop-utils bigtop-jsvc bigtop-tomcat bigtop-groovy&lt;br /&gt;
 &lt;br /&gt;
Open ports 8080, 8009 and 8005 for the container and start /usr/lib/bigtop-tomcat/bin/catalina.sh run&lt;br /&gt;
&lt;br /&gt;
 docker run --name bigtop-catalina -p 8080:8080 -p 8005:8005 -p8009:8009 -ti --entrypoint /bin/bash bigtop-image /usr/lib/bigtop-tomcat/bin/catalina.sh run&lt;br /&gt;
&lt;br /&gt;
Check if tomcat is running fine by deploying a &amp;quot;hello world&amp;quot; war&lt;br /&gt;
&lt;br /&gt;
 zypper install wget&lt;br /&gt;
 cd /usr/lib/bigtop-tomcat&lt;br /&gt;
 mkdir -p webapps&lt;br /&gt;
 cd webapps&lt;br /&gt;
 wget https://tomcat.apache.org/tomcat-8.0-doc/appdev/sample/sample.war&lt;br /&gt;
&lt;br /&gt;
Tomcat should find the war file, expand and deploy it automatically. Find it at http://localhost:8080/sample&lt;br /&gt;
&lt;br /&gt;
Groovy that comes with bigtop uses utility which and needs a JDK. Install them&lt;br /&gt;
&lt;br /&gt;
 zypper install which java-1_8_0-openjdk-devel&lt;br /&gt;
&lt;br /&gt;
now what?&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14664</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14664"/>
		<updated>2020-10-09T21:21:53Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Enable Longan-Nano/GD32VF103 reset via jtag adapter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MyPw below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;br /&gt;
&lt;br /&gt;
== Longan Nano Bits of Wisdom ==&lt;br /&gt;
&lt;br /&gt;
use PlatformIO :)&lt;br /&gt;
&lt;br /&gt;
* https://github.com/joba-1/Longan-Nano-Bme280-Spi&lt;br /&gt;
* https://github.com/MuellerA/LonganNanoTest/tree/master/SpiDma/src&lt;br /&gt;
* https://www.susa.net/wordpress/2019/10/longan-nano-gd32vf103/&lt;br /&gt;
* https://github.com/linusreM/Longan-RISC-V-examples&lt;br /&gt;
* https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md&lt;br /&gt;
&lt;br /&gt;
=== OpenOcd ===&lt;br /&gt;
&lt;br /&gt;
==== Discover board correctly ====&lt;br /&gt;
&lt;br /&gt;
You see this during upload or debug with sipeed jtag :&lt;br /&gt;
&lt;br /&gt;
 Info : JTAG tap: riscv.cpu tap/device found: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Warn : JTAG tap: riscv.cpu       UNEXPECTED: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Error: JTAG tap: riscv.cpu  expected 1 of 1: 0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co.,Ltd.), part: 0xe200, ver: 0x1)&lt;br /&gt;
 Info : JTAG tap: auto0.tap tap/device found: 0x790007a3 (mfg: 0x3d1 (GigaDevice Semiconductor (Beijing)), part: 0x9000, ver: 0x7)&lt;br /&gt;
 Error: Trying to use configured scan chain anyway...&lt;br /&gt;
&lt;br /&gt;
* vi ~/.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg&lt;br /&gt;
* Change expexted id at the end of line &amp;quot;jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d&amp;quot; to &amp;quot;0x1000563d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Errormessage should be gone. No idea if it actually changes any behaviour...&lt;br /&gt;
&lt;br /&gt;
==== Enable Longan-Nano/GD32VF103 reset via jtag adapter ====&lt;br /&gt;
&lt;br /&gt;
as far as I understand it, the gd32vf103 has no normal way to be reset via jtag.&lt;br /&gt;
If you upload and debug: all fine. But if you upload and want to run the target without debug: nothing happens. Reset button is not functional.&lt;br /&gt;
This can be remedied with a manual power cycle, but that is not convenient...&lt;br /&gt;
&lt;br /&gt;
This is a gist provides a solution: https://gist.github.com/elfmimi/1deb9c94b0f0900ae8a9df740b62bcd6&lt;br /&gt;
* Replace file ~/.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg with the gist version&lt;br /&gt;
* Modify ~/.platformio/platforms/gd32v/builder/main.py: change the whole line containig &#039;program {$SOURCE}&#039; with &#039; &amp;quot;-c&amp;quot;, &amp;quot;program {$SOURCE} verify reset exit&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the openocd command to flash the Longan Nano, firmware path relative to the project directory:&lt;br /&gt;
 FW=.pio/build/sipeed-longan-nano/firmware.elf&lt;br /&gt;
 OCD=~/.platformio/packages/tool-openocd-gd32v&lt;br /&gt;
 $OCD/bin/openocd -s $OCD/share/openocd/scripts -f interface/ftdi/sipeed-rv-debugger.cfg -f target/gd32vf103.cfg -c &amp;quot;init; halt;&amp;quot; -c &amp;quot;program $FW verify reset exit&amp;quot;&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14663</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14663"/>
		<updated>2020-10-09T21:12:03Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Enable Longan-Nano/GD32VF103 reset via jtag adapter */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MyPw below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;br /&gt;
&lt;br /&gt;
== Longan Nano Bits of Wisdom ==&lt;br /&gt;
&lt;br /&gt;
use PlatformIO :)&lt;br /&gt;
&lt;br /&gt;
* https://github.com/joba-1/Longan-Nano-Bme280-Spi&lt;br /&gt;
* https://github.com/MuellerA/LonganNanoTest/tree/master/SpiDma/src&lt;br /&gt;
* https://www.susa.net/wordpress/2019/10/longan-nano-gd32vf103/&lt;br /&gt;
* https://github.com/linusreM/Longan-RISC-V-examples&lt;br /&gt;
* https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md&lt;br /&gt;
&lt;br /&gt;
=== OpenOcd ===&lt;br /&gt;
&lt;br /&gt;
==== Discover board correctly ====&lt;br /&gt;
&lt;br /&gt;
You see this during upload or debug with sipeed jtag :&lt;br /&gt;
&lt;br /&gt;
 Info : JTAG tap: riscv.cpu tap/device found: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Warn : JTAG tap: riscv.cpu       UNEXPECTED: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Error: JTAG tap: riscv.cpu  expected 1 of 1: 0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co.,Ltd.), part: 0xe200, ver: 0x1)&lt;br /&gt;
 Info : JTAG tap: auto0.tap tap/device found: 0x790007a3 (mfg: 0x3d1 (GigaDevice Semiconductor (Beijing)), part: 0x9000, ver: 0x7)&lt;br /&gt;
 Error: Trying to use configured scan chain anyway...&lt;br /&gt;
&lt;br /&gt;
* vi ~/.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg&lt;br /&gt;
* Change expexted id at the end of line &amp;quot;jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d&amp;quot; to &amp;quot;0x1000563d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Errormessage should be gone. No idea if it actually changes any behaviour...&lt;br /&gt;
&lt;br /&gt;
==== Enable Longan-Nano/GD32VF103 reset via jtag adapter ====&lt;br /&gt;
&lt;br /&gt;
as far as I understand it, the gd32vf103 has no normal way to be reset via jtag.&lt;br /&gt;
If you upload and debug: all fine. But if you upload and want to run the target without debug: nothing happens. Reset button is not functional.&lt;br /&gt;
This can be remedied with a manual power cycle, but that is not convenient...&lt;br /&gt;
&lt;br /&gt;
This is a gist provides a solution: https://gist.github.com/elfmimi/1deb9c94b0f0900ae8a9df740b62bcd6&lt;br /&gt;
* Replace file ~/.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg with the gist version&lt;br /&gt;
* Modify ~/.platformio/platforms/gd32v/builder/main.py: change the whole line containig &#039;program {$SOURCE}&#039; with &#039; &amp;quot;-c&amp;quot;, &amp;quot;program {$SOURCE} verify reset exit&amp;quot;&#039;&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14662</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14662"/>
		<updated>2020-10-09T15:39:48Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Longan Nano Bits of Wisdom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MyPw below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;br /&gt;
&lt;br /&gt;
== Longan Nano Bits of Wisdom ==&lt;br /&gt;
&lt;br /&gt;
use PlatformIO :)&lt;br /&gt;
&lt;br /&gt;
* https://github.com/joba-1/Longan-Nano-Bme280-Spi&lt;br /&gt;
* https://github.com/MuellerA/LonganNanoTest/tree/master/SpiDma/src&lt;br /&gt;
* https://www.susa.net/wordpress/2019/10/longan-nano-gd32vf103/&lt;br /&gt;
* https://github.com/linusreM/Longan-RISC-V-examples&lt;br /&gt;
* https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md&lt;br /&gt;
&lt;br /&gt;
=== OpenOcd ===&lt;br /&gt;
&lt;br /&gt;
==== Discover board correctly ====&lt;br /&gt;
&lt;br /&gt;
You see this during upload or debug with sipeed jtag :&lt;br /&gt;
&lt;br /&gt;
 Info : JTAG tap: riscv.cpu tap/device found: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Warn : JTAG tap: riscv.cpu       UNEXPECTED: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Error: JTAG tap: riscv.cpu  expected 1 of 1: 0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co.,Ltd.), part: 0xe200, ver: 0x1)&lt;br /&gt;
 Info : JTAG tap: auto0.tap tap/device found: 0x790007a3 (mfg: 0x3d1 (GigaDevice Semiconductor (Beijing)), part: 0x9000, ver: 0x7)&lt;br /&gt;
 Error: Trying to use configured scan chain anyway...&lt;br /&gt;
&lt;br /&gt;
* vi ~/.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg&lt;br /&gt;
* Change expexted id at the end of line &amp;quot;jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d&amp;quot; to &amp;quot;0x1000563d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Errormessage should be gone. No idea if it actually changes any behaviour...&lt;br /&gt;
&lt;br /&gt;
==== Enable Longan-Nano/GD32VF103 reset via jtag adapter ====&lt;br /&gt;
&lt;br /&gt;
as far as I understand it, the gd32vf103 has no normal way to be reset via jtag.&lt;br /&gt;
If you upload and debug: all fine. But if you upload and want to run the target without debug: nothing happens. Reset button is not functional.&lt;br /&gt;
This can be remedied with a manual power cycle, but that is not convenient...&lt;br /&gt;
&lt;br /&gt;
This is a gist, that might provide a solution, but I dont understand it enough yet to make it work on my system :(&lt;br /&gt;
https://gist.github.com/elfmimi/1deb9c94b0f0900ae8a9df740b62bcd6&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14661</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14661"/>
		<updated>2020-10-09T12:43:37Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Longan Nano Bits of Wisdom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MyPw below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;br /&gt;
&lt;br /&gt;
== Longan Nano Bits of Wisdom ==&lt;br /&gt;
&lt;br /&gt;
use PlatformIO :)&lt;br /&gt;
&lt;br /&gt;
* https://github.com/joba-1/Longan-Nano-Bme280-Spi&lt;br /&gt;
* https://github.com/MuellerA/LonganNanoTest/tree/master/SpiDma/src&lt;br /&gt;
* https://www.susa.net/wordpress/2019/10/longan-nano-gd32vf103/&lt;br /&gt;
* https://github.com/linusreM/Longan-RISC-V-examples&lt;br /&gt;
* https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md&lt;br /&gt;
&lt;br /&gt;
=== OpenOcd ===&lt;br /&gt;
&lt;br /&gt;
==== Discover board correctly ====&lt;br /&gt;
&lt;br /&gt;
You see this during upload or debug with sipeed jtag :&lt;br /&gt;
&lt;br /&gt;
 Info : JTAG tap: riscv.cpu tap/device found: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Warn : JTAG tap: riscv.cpu       UNEXPECTED: 0x1000563d (mfg: 0x31e (Andes Technology Corporation), part: 0x0005, ver: 0x1)&lt;br /&gt;
 Error: JTAG tap: riscv.cpu  expected 1 of 1: 0x1e200a6d (mfg: 0x536 (Nuclei System Technology Co.,Ltd.), part: 0xe200, ver: 0x1)&lt;br /&gt;
 Info : JTAG tap: auto0.tap tap/device found: 0x790007a3 (mfg: 0x3d1 (GigaDevice Semiconductor (Beijing)), part: 0x9000, ver: 0x7)&lt;br /&gt;
 Error: Trying to use configured scan chain anyway...&lt;br /&gt;
&lt;br /&gt;
* vi ~/.platformio/packages/tool-openocd-gd32v/share/openocd/scripts/target/gd32vf103.cfg&lt;br /&gt;
* Change expexted id at the end of line &amp;quot;jtag newtap $_CHIPNAME cpu -irlen 5 -expected-id 0x1e200a6d&amp;quot; to &amp;quot;0x1000563d&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Errormessage should be gone. No idea if it actually changes any behaviour...&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14660</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14660"/>
		<updated>2020-10-05T12:22:57Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Longan Nano Bits of Wisdom */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MyPw below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;br /&gt;
&lt;br /&gt;
== Longan Nano Bits of Wisdom ==&lt;br /&gt;
&lt;br /&gt;
use PlatformIO :)&lt;br /&gt;
&lt;br /&gt;
* https://github.com/joba-1/Longan-Nano-Bme280-Spi&lt;br /&gt;
* https://github.com/MuellerA/LonganNanoTest/tree/master/SpiDma/src&lt;br /&gt;
* https://www.susa.net/wordpress/2019/10/longan-nano-gd32vf103/&lt;br /&gt;
* https://github.com/linusreM/Longan-RISC-V-examples&lt;br /&gt;
* https://github.com/riscv/riscv-asm-manual/blob/master/riscv-asm.md&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14657</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14657"/>
		<updated>2020-09-29T10:16:02Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Tasmota Build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MyPw below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14656</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14656"/>
		<updated>2020-09-29T10:04:22Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Tasmota Build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MYPW below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pio\/build\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14655</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14655"/>
		<updated>2020-09-29T10:01:32Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Tasmota Build */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MYPW below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        WLAN_PW=&amp;quot;MyPw&amp;quot;&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &amp;quot;s/YourWifiPassword/$WLAN_PW/&amp;quot; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14654</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14654"/>
		<updated>2020-09-29T09:59:37Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MYPW below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &#039;s/YourWifiPassword/MYPW/&#039; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pioenvs/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; gzip &amp;lt;&amp;quot;$f&amp;quot; &amp;gt;&amp;quot;/srv/www/htdocs/${g/.pioenvs\/}.gz&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14652</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14652"/>
		<updated>2020-09-28T17:42:45Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Windows? See here: [[https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip Drivers]] and [[https://github.com/digistump/DigistumpArduino/ DigistumpArduino Github Repo]]&lt;br /&gt;
* Linux needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;br /&gt;
&lt;br /&gt;
== Sonoff Basic Tasmota Config for I2C ==&lt;br /&gt;
&lt;br /&gt;
just noticed I did not note that anywhere else: my Sonoff basic is configured like this:&lt;br /&gt;
&lt;br /&gt;
* serial log off&lt;br /&gt;
* serial out GPIO 1 -&amp;gt; SDA&lt;br /&gt;
* serial in GPIO 3 -&amp;gt; SCL&lt;br /&gt;
&lt;br /&gt;
== Tasmota Build ==&lt;br /&gt;
&lt;br /&gt;
First fork github tasmota repo or merge a pull request to an existing fork, then replace MYPW below and add other -e options if needed&lt;br /&gt;
&lt;br /&gt;
        git clone git@github.com:joba-1/Tasmota.git&lt;br /&gt;
        cd Tasmota/&lt;br /&gt;
        cp tasmota/user_config_override_sample.h tasmota/user_config_override.h &lt;br /&gt;
        sed -i &#039;s/YourWifiPassword/MYPW/&#039; tasmota/user_config_override.h &lt;br /&gt;
        sed -i -e&#039;s/YourSSID/job.fritz.ssid/&#039; -e &#039;s/your-mqtt-server.com/192.168.1.4/&#039; -e &#039;s/MY_IP/0.0.0.0/&#039; tasmota/user_config_override.h &lt;br /&gt;
        PLATFORMIO_BUILD_FLAGS=-DUSE_CONFIG_OVERRIDE pio run -e tasmota-sensors -e tasmota-minimal&lt;br /&gt;
        for f in .pio/build/*/firmware.bin; do g=&amp;quot;${f/\/firmware}&amp;quot;; cp -av &amp;quot;$f&amp;quot; &amp;quot;/srv/www/htdocs/${g/.pio\/build\/}&amp;quot;; done&lt;br /&gt;
&lt;br /&gt;
Now compiled variants are accessible with the local webserver.&lt;br /&gt;
If you don&#039;t have a webserver running, just do &amp;quot;cd /srv/www/htdocs/ &amp;amp;&amp;amp; python3 -m http.server 8000&amp;quot; and you have one.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14640</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14640"/>
		<updated>2020-07-10T10:00:45Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Digistump */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 sudo udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14639</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14639"/>
		<updated>2020-07-09T13:12:44Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Digistump */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
* Flash firmware&lt;br /&gt;
Start upload first, then plug in the device. Micronucleus finds the booting device automatically with the help of above udev rules.&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14638</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14638"/>
		<updated>2020-07-09T10:36:44Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Digistump */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini (micronucleus finds device freshly plugged into an usb port automatically with the help of above udev rule)&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
	<entry>
		<id>https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14637</id>
		<title>Projekt IoT</title>
		<link rel="alternate" type="text/html" href="https://banzhaf.chickenkiller.com/mediawiki/index.php?title=Projekt_IoT&amp;diff=14637"/>
		<updated>2020-07-09T10:29:05Z</updated>

		<summary type="html">&lt;p&gt;0:0:0:0:0:0:0:1: /* Arduino IDE Inofficial Boards */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= IoT - Internet of Things =&lt;br /&gt;
&lt;br /&gt;
some project ideas and notes regarding Arduino, ESP8266, ESP32 and other micro controllers&lt;br /&gt;
&lt;br /&gt;
* Arduino Nano with 433 MHz data transfer&lt;br /&gt;
* ESP-01 for shutter control&lt;br /&gt;
* ESP-12 for LED switch&lt;br /&gt;
* ESP-12 for laundry room air control&lt;br /&gt;
* SonOff with own firmware and tasmota devices&lt;br /&gt;
  https://github.com/arendst/Sonoff-Tasmota/wiki&lt;br /&gt;
&lt;br /&gt;
== Arduino IDE Inofficial Boards ==&lt;br /&gt;
&lt;br /&gt;
look here for an overview: &lt;br /&gt;
* https://playground.arduino.cc/Main/ArduinoOnOtherAtmelChips&lt;br /&gt;
&lt;br /&gt;
=== ATTiny ===&lt;br /&gt;
&lt;br /&gt;
Most ATTinys: https://github.com/SpenceKonde/ATTinyCore&lt;br /&gt;
&lt;br /&gt;
* Datasheet 2313: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Datasheet.pdf&lt;br /&gt;
* Datasheet 2313 Summary: http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2543-AVR-ATtiny2313_Summary.pdf&lt;br /&gt;
* Pinout 2313: https://github.com/SpenceKonde/ATTinyCore/blob/master/avr/extras/Pinout_x313.jpg&lt;br /&gt;
&lt;br /&gt;
==== Wiring ====&lt;br /&gt;
&lt;br /&gt;
https://startingelectronics.org/tutorials/AVR-8-microcontrollers/ATtiny2313-tutorial/P8-TC0-polled-timer/ATTINY2313-TC0-polled.png&lt;br /&gt;
&lt;br /&gt;
* Vcc can also be 3.3V&lt;br /&gt;
* C1 can have bigger capacity for unstable voltage&lt;br /&gt;
* R1 can be higher values&lt;br /&gt;
&lt;br /&gt;
==== Programmer ====&lt;br /&gt;
&lt;br /&gt;
I have an USBasp. Program with avrdude. Works integrated in Arduino IDE.&lt;br /&gt;
Ignore warning &amp;quot;avrdude: warning: cannot set sck period. please check for usbasp firmware update.&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Numbering of Connector is &lt;br /&gt;
&lt;br /&gt;
 1 3 5 7 9&lt;br /&gt;
 2 4 6 8 10&lt;br /&gt;
&lt;br /&gt;
Need to connect Vcc, Gnd, Miso(1), Mosi, Reset and Sck&lt;br /&gt;
&lt;br /&gt;
New chip needed 0.5MHz for correct timing with delay()&lt;br /&gt;
&lt;br /&gt;
Needed to add this udev rule&lt;br /&gt;
&lt;br /&gt;
 echo &#039;SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16c0&amp;quot;, ATTRS{idProduct}==&amp;quot;05dc&amp;quot;, GROUP=&amp;quot;dialout&amp;quot;, MODE=&amp;quot;0660&amp;quot;&#039; | sudo sh -c &#039;cat &amp;gt;/etc/udev/rules.d/50-USBasp.rules&#039;&lt;br /&gt;
&lt;br /&gt;
=== Digistump ===&lt;br /&gt;
&lt;br /&gt;
or compatible board with ATTiny85 and USB (P0-P5 and 5V/Gnd/Vin broken out)&lt;br /&gt;
&lt;br /&gt;
* Needs Micronucleus udev rules in /lib/udev/rules.d/49-micronucleus.rules&lt;br /&gt;
 SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;&lt;br /&gt;
 KERNEL==&amp;quot;ttyACM*&amp;quot;, ATTRS{idVendor}==&amp;quot;16d0&amp;quot;, ATTRS{idProduct}==&amp;quot;0753&amp;quot;, MODE:=&amp;quot;0666&amp;quot;, ENV{ID_MM_DEVICE_IGNORE}=&amp;quot;1&amp;quot;&lt;br /&gt;
if you update rules files, don&#039;t forget to &lt;br /&gt;
 udevadm control --reload-rules&lt;br /&gt;
* Example platformio.ini (micronucleus finds usb port automatically with the help of above udev rule)&lt;br /&gt;
 [env:attiny85]&lt;br /&gt;
 platform = atmelavr&lt;br /&gt;
 board = digispark-tiny&lt;br /&gt;
 framework = arduino&lt;br /&gt;
 ; change microcontroller&lt;br /&gt;
 ; board_build.mcu = attiny85&lt;br /&gt;
 ; change MCU frequency&lt;br /&gt;
 board_build.f_cpu = 8000000L&lt;br /&gt;
* Example main.cpp blink sketch (different versions use pb0 or pb1 as internal onboard led)&lt;br /&gt;
 #include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
   pinMode(0, OUTPUT); //LED on Model B&lt;br /&gt;
   pinMode(1, OUTPUT); //LED on Model A   &lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void loop() {&lt;br /&gt;
   digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)&lt;br /&gt;
   digitalWrite(1, HIGH);&lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
   digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW&lt;br /&gt;
   digitalWrite(1, LOW); &lt;br /&gt;
   delay(500);              // wait for half a second&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=== ESP8266 ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/esp8266/Arduino&lt;br /&gt;
&lt;br /&gt;
=== Domoticz ===&lt;br /&gt;
&lt;br /&gt;
This is a home automation system that is natively supported by tasmota devices via mqtt&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
===== Old Repo =====&lt;br /&gt;
&lt;br /&gt;
* Add repos https://software.opensuse.org/download.html?project=home%3AGuillaume_G&amp;amp;package=domoticz&lt;br /&gt;
* Install package domoticz&lt;br /&gt;
* Create system user&lt;br /&gt;
 sudo /usr/sbin/useradd -U -g domoticz -m -r domoticz&lt;br /&gt;
* Edit section Service in /usr/lib/systemd/system/domoticz.service (ports, logging, db)&lt;br /&gt;
 [Service]&lt;br /&gt;
 ExecStart=/opt/domoticz/domoticz -notimestamps -syslog -www 8888 -sslwww 4343 -dbase domoticz.db&lt;br /&gt;
 WorkingDirectory=/home/domoticz&lt;br /&gt;
 User=domoticz&lt;br /&gt;
 Group=domoticz&lt;br /&gt;
 Restart=always&lt;br /&gt;
* Activate new service file, start domoticz and check status&lt;br /&gt;
 sudo systemctl daemon-reload&lt;br /&gt;
 sudo systemctl enable domoticz&lt;br /&gt;
 sudo systemctl start domoticz&lt;br /&gt;
 sudo systemctl status domoticz&lt;br /&gt;
&lt;br /&gt;
===== Self Compiled =====&lt;br /&gt;
&lt;br /&gt;
domoticz.service&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Domoticz 4 (JoBa Edition)&lt;br /&gt;
Wants=nss-lookup.target&lt;br /&gt;
After=network.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PIDFile=/run/domoticz/domoticz.pid&lt;br /&gt;
#ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -www 8080 -sslwww 8443&lt;br /&gt;
ExecStart=/opt/domoticz/domoticz -daemon -syslog -log /var/log/domoticz.log -pidfile /run/domoticz/domoticz.pid -www 8888 -sslwww 8443&lt;br /&gt;
ExecReload=/bin/kill -HUP $MAINPID&lt;br /&gt;
ExecStop=/bin/kill -KILL $MAINPID&lt;br /&gt;
User=domoticz&lt;br /&gt;
Group=domoticz&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In domoticz.spec adapt APPVERSION, APPHASH and Version prefix&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# spec file for package domoticz&lt;br /&gt;
#&lt;br /&gt;
# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany.&lt;br /&gt;
# Copyright (c) 2014-2016 Guillaume GARDET &amp;lt;guillaume@opensuse.org&amp;gt;&lt;br /&gt;
# Copyright (c) 2018 Joachim Banzhaf &amp;lt;joachim.banzhaf@gmail.com&amp;gt;&lt;br /&gt;
#&lt;br /&gt;
# All modifications and additions to the file contributed by third parties&lt;br /&gt;
# remain the property of their copyright owners, unless otherwise agreed&lt;br /&gt;
# upon. The license for this file, and modifications and additions to the&lt;br /&gt;
# file, is the same license as for the pristine package itself (unless the&lt;br /&gt;
# license for the pristine package is not an Open Source License, in which&lt;br /&gt;
# case the license is the MIT License). An &amp;quot;Open Source License&amp;quot; is a&lt;br /&gt;
# license that conforms to the Open Source Definition (Version 1.9)&lt;br /&gt;
# published by the Open Source Initiative.&lt;br /&gt;
&lt;br /&gt;
# Please submit bugfixes or comments via http://bugs.opensuse.org/&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
#&lt;br /&gt;
# Hash can be found on Github, select tag, look for &amp;quot;Last commit xxxx&amp;quot; under the Clone/Download button&lt;br /&gt;
#&lt;br /&gt;
&lt;br /&gt;
%define APPVERSION 9700&lt;br /&gt;
%define APPHASH 2772d9f&lt;br /&gt;
&lt;br /&gt;
Name: domoticz&lt;br /&gt;
Summary: Domoticz is a very light weight Home Automation System&lt;br /&gt;
Version: 4.%{APPVERSION}&lt;br /&gt;
Release: 0&lt;br /&gt;
License: GPL-3.0+&lt;br /&gt;
Group: Productivity/Other&lt;br /&gt;
Url: http://www.domoticz.com/&lt;br /&gt;
Source0: %{name}-%{version}.tar.gz&lt;br /&gt;
Source1: domoticz.service&lt;br /&gt;
BuildRoot: %{_tmppath}/%{name}-%{version}-build&lt;br /&gt;
BuildRequires: cmake&lt;br /&gt;
BuildRequires: gcc-c++&lt;br /&gt;
BuildRequires: pkgconfig&lt;br /&gt;
BuildRequires: fdupes&lt;br /&gt;
BuildRequires: openssl-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
BuildRequires: boost-devel &amp;gt;= 1.55&lt;br /&gt;
BuildRequires: curl-devel&lt;br /&gt;
BuildRequires: libusb-devel&lt;br /&gt;
BuildRequires: openzwave&lt;br /&gt;
BuildRequires: libopenzwave-devel&lt;br /&gt;
BuildRequires: libudev-devel&lt;br /&gt;
BuildRequires: git&lt;br /&gt;
BuildRequires: sqlite&lt;br /&gt;
BuildRequires: sqlite-devel&lt;br /&gt;
BuildRequires: python3-devel&lt;br /&gt;
Requires: sqlite&lt;br /&gt;
Requires: python3-devel&lt;br /&gt;
BuildRequires: systemd-rpm-macros&lt;br /&gt;
%{?systemd_requires}&lt;br /&gt;
&lt;br /&gt;
%description&lt;br /&gt;
Domoticz is a very light weight Home Automation System that lets you monitor and&lt;br /&gt;
configure various devices like: Lights, Switches, various sensors/meters like&lt;br /&gt;
Temperature, Rain, Wind, UV, Electra, Gas, Water and much more.&lt;br /&gt;
Notifications/Alerts can be sent to any mobile device. Supported platforms:&lt;br /&gt;
Package for openSUSE 42.2 by Joachim.Banzhaf@gmail.com&lt;br /&gt;
&lt;br /&gt;
Unix/Linux, (openSUSE, Raspberry Pi/Cubieboard recommended) Windows &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
%prep&lt;br /&gt;
%setup -q&lt;br /&gt;
&lt;br /&gt;
%build&lt;br /&gt;
cat &amp;gt; appversion.default &amp;lt;&amp;lt; EOL&lt;br /&gt;
#define APPVERSION %{APPVERSION}&lt;br /&gt;
#define APPHASH &amp;quot;%{APPHASH}&amp;quot;&lt;br /&gt;
#define APPDATE `date +%s`&lt;br /&gt;
EOL&lt;br /&gt;
#&lt;br /&gt;
mkdir build/&lt;br /&gt;
pushd build/&lt;br /&gt;
cmake .. \&lt;br /&gt;
    -DCMAKE_BUILD_TYPE=Release \&lt;br /&gt;
    -DUSE_STATIC_BOOST=OFF \&lt;br /&gt;
    -DUSE_STATIC_OPENZWAVE=OFF&lt;br /&gt;
make&lt;br /&gt;
popd&lt;br /&gt;
&lt;br /&gt;
%install&lt;br /&gt;
pushd build/&lt;br /&gt;
%make_install&lt;br /&gt;
popd&lt;br /&gt;
install -m 0644 -D %{SOURCE1} %{buildroot}/%{_unitdir}/%{name}.service&lt;br /&gt;
#&lt;br /&gt;
# Cleanup&lt;br /&gt;
#&lt;br /&gt;
rm -f %{buildroot}/opt/domoticz/scripts/dzVents/runtime/tests/scandir/.f3.lua.swp&lt;br /&gt;
#&lt;br /&gt;
%fdupes -s %{buildroot}/opt&lt;br /&gt;
#&lt;br /&gt;
# Setup system&lt;br /&gt;
#&lt;br /&gt;
mkdir -p %{buildroot}/run/domoticz&lt;br /&gt;
mkdir -p %{buildroot}/var/log&lt;br /&gt;
touch %{buildroot}/var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
# install /usr/lib/tmpfiles.d/domoticz.conf&lt;br /&gt;
mkdir -p %{buildroot}%{_tmpfilesdir}&lt;br /&gt;
cat &amp;gt; %{buildroot}%{_tmpfilesdir}/domoticz.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
# domoticz needs existing /run/domoticz/ to create domoticz.pid there&lt;br /&gt;
# See tmpfiles.d(5) for details&lt;br /&gt;
&lt;br /&gt;
d /run/domoticz 0755 domoticz domoticz -&lt;br /&gt;
EOF&lt;br /&gt;
&lt;br /&gt;
%pre&lt;br /&gt;
getent group domoticz &amp;gt;/dev/null || groupadd -r domoticz&lt;br /&gt;
getent passwd domoticz &amp;gt;/dev/null || \&lt;br /&gt;
useradd -r -g domoticz -d %{_sharedstatedir}/domoticz -s /sbin/nologin \&lt;br /&gt;
        -c &amp;quot;domoticz daemon account&amp;quot; domoticz&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_pre domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%post&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_add_post domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%preun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
        %service_del_preun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%postun&lt;br /&gt;
%if 0%{?_unitdir:1}&lt;br /&gt;
    %service_del_postun domoticz.service&lt;br /&gt;
%endif&lt;br /&gt;
&lt;br /&gt;
%files&lt;br /&gt;
%defattr(-,root,root)&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /opt/domoticz/&lt;br /&gt;
%dir %attr(0755,domoticz,domoticz) /run/domoticz/&lt;br /&gt;
%attr(-,domoticz,domoticz) /opt/domoticz/*&lt;br /&gt;
%{_tmpfilesdir}/domoticz.conf&lt;br /&gt;
%{_unitdir}/%{name}.service&lt;br /&gt;
%attr(0644,domoticz,domoticz) /var/log/domoticz.log&lt;br /&gt;
&lt;br /&gt;
%changelog&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Add to /usr/share/cmake/Modules/FindOpenSSL.cmake after failing find_library() calls&lt;br /&gt;
 set(OPENSSL_SSL_LIBRARY &amp;quot;/usr/lib64/libssl.so&amp;quot;)&lt;br /&gt;
 set(OPENSSL_CRYPTO_LIBRARY &amp;quot;/usr/lib64/libcrypto.so&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Commands to download, build, update and install&lt;br /&gt;
 v=4.9700&lt;br /&gt;
 zypper in libopenzwave-devel libopenssl-devel libcrypto41&lt;br /&gt;
 mkdir -p /home/joachim/rpmbuild/SPECS /home/joachim/rpmbuild/SOURCES&lt;br /&gt;
 wget -O domoticz.zip https://github.com/domoticz/domoticz/archive/${v}.zip&lt;br /&gt;
 unzip domoticz.zip&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
Commands for git version (modify spec as above, and I used git clone --recursive, not sure it is needed...)&lt;br /&gt;
 v=5.0000&lt;br /&gt;
 git clone https://github.com/domoticz/domoticz.git domoticz-$v&lt;br /&gt;
 tar czf /home/joachim/rpmbuild/SOURCES/domoticz-$v.tar.gz domoticz-${v}/&lt;br /&gt;
 rpmbuild -ba /home/joachim/rpmbuild/SPECS/domoticz.spec&lt;br /&gt;
 sudo rpm -Uhv /home/joachim/rpmbuild/RPMS/x86_64/domoticz-${v}-0.x86_64.rpm&lt;br /&gt;
 sudo systemctl start domoticz.service&lt;br /&gt;
&lt;br /&gt;
==== Backup ====&lt;br /&gt;
&lt;br /&gt;
Backups of domoticz database in /opt/domoticz/backups, or copy /opt/domoticz/domoticz.db yourself.&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
&lt;br /&gt;
https://github.com/arendst/Sonoff-Tasmota/wiki/Domoticz&lt;br /&gt;
&lt;br /&gt;
* On setup/hardware page create mqtt connection (host job4, port 1883, option flat/out) and one Dummy device for virtual switches&lt;br /&gt;
* For each tasmota device function (switch, temp/hum, ...) click on &amp;quot;virtual sensor&amp;quot; (on hardware page at dummy device entry)&lt;br /&gt;
* On setup/devices page look at idx values for the virtual sensor devices and configure tasmota device with them.&lt;br /&gt;
&lt;br /&gt;
=== Cura Build ===&lt;br /&gt;
&lt;br /&gt;
==== Prerequisites ====&lt;br /&gt;
&lt;br /&gt;
 git clone https://github.com/Ultimaker/Cura.git&lt;br /&gt;
 git clone https://github.com/Ultimaker/cura-build&lt;br /&gt;
&lt;br /&gt;
Follow instructions for CentOS in cura-build/README.md and try to adapt for opensuse 42.2&lt;br /&gt;
&lt;br /&gt;
 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&lt;br /&gt;
 # pip3 install F2PY&lt;br /&gt;
&lt;br /&gt;
F2PY not found -&amp;gt; build may fail&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
cmake fails because it needs python 3.5 while opensuse 42.2 only has 3.4 - end of story for now :( &lt;br /&gt;
&lt;br /&gt;
Use app container for now (but how to use core functions directly?)&lt;br /&gt;
&lt;br /&gt;
=== Feinstaubsensor ===&lt;br /&gt;
&lt;br /&gt;
https://luftdaten.info/feinstaubsensor-bauen/&lt;br /&gt;
&lt;br /&gt;
* NodeMCU&lt;br /&gt;
* SDS011&lt;br /&gt;
* optional: BME280 (probably needs code change since they use DHT22)&lt;br /&gt;
* USB powersupply&lt;br /&gt;
* USB cable&lt;br /&gt;
* 2 x Marley HT DN75, 87°&lt;br /&gt;
* Gaze als Insektenschutz&lt;br /&gt;
* 3 x Kabelbinder lang (für Gaze an Marley, Fixierung an Pfosten o.ä.) und kurz (Kabel/NodeMCU/SDS011/BME280) fixieren&lt;br /&gt;
* ~20cm Plastikröhrchen Innendurchmesser 6mm (dunkel)&lt;br /&gt;
&lt;br /&gt;
Cost ~25€&lt;br /&gt;
&lt;br /&gt;
=== RFID Demo ===&lt;br /&gt;
&lt;br /&gt;
https://github.com/miguelbalboa/rfid/blob/master/examples/AccessControl/AccessControl.ino&lt;br /&gt;
&lt;br /&gt;
What is needed for an access control demo (might send mqtt status):&lt;br /&gt;
&lt;br /&gt;
* ESP8266 as central unit&lt;br /&gt;
* RFID reader/writer&lt;br /&gt;
* 1 RFID Card (Master)&lt;br /&gt;
* n RFID Tags (ID &amp;quot;Cards&amp;quot;)&lt;br /&gt;
* USB Cable MicroUSB&lt;br /&gt;
* LED for access granted or added: green&lt;br /&gt;
* LED for access denied or removed or error: red (red+green: master mode)&lt;br /&gt;
* Dupont cabling for reader (~10 f-f)&lt;br /&gt;
* Breadboard&lt;br /&gt;
&lt;br /&gt;
Cost ~5€&lt;br /&gt;
&lt;br /&gt;
=== RF-Link ===&lt;br /&gt;
&lt;br /&gt;
RF-Link is a gateway transceiver for many 433MHz (and other frequencies) controlled devices, like weather stations and remote controlled plugs.&lt;br /&gt;
&lt;br /&gt;
You need an Atmega 2560, an RF receiver and sender of the desired frequency (e.g. an RXB6 and an FS-1000a) and wire it as described here: http://www.rflink.nl/blog2/wiring (should be below 15€). &lt;br /&gt;
&lt;br /&gt;
* Download RF-Link Firmware from here: http://www.rflink.nl/blog2/download&lt;br /&gt;
* Unzip it to an empty folder and cd to the directory containing RFLink.cpp.hex&lt;br /&gt;
* Upload with Arduino IDE supplied avrdude (or find it elsewhere...). Adjust serial port as needed &lt;br /&gt;
 ~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/bin/avrdude -C~/.arduino15/packages/arduino/tools/avrdude/6.3.0-arduino9/etc/avrdude.conf -patmega2560 -cstk500v2 -P/dev/ttyUSB1 -b115200 -D -Uflash:w:RFLink.cpp.hex:i&lt;br /&gt;
&lt;br /&gt;
Now connect the Atmega usb serial with a pc, start a terminal program with that port at 57600 baud and read what is in the air.&lt;br /&gt;
Some commands to try are here: http://www.rflink.nl/blog2/protref&lt;br /&gt;
&lt;br /&gt;
Domoticz home automation can integrate an RF-Link via serial and via ethernet (not tested, sernet? ehternet shield?). It autodetects available devices (enable for 5min in settings) and can control switches after &amp;quot;learning&amp;quot; them. Basically all devices I already owned did work, good coverage. Currently I have one issue with this: domoticz can only use the device if I open it before with a terminal program - no idea why...&lt;br /&gt;
&lt;br /&gt;
Antennas for 433MHz can be thick single wire of 16.8cm length. It should point in a direction 90 degrees from the direction to the device most problematic to communicate with. I could communicate with devices outside the house, ~5m away and also inside but one floor down or up, ~12m away.&lt;br /&gt;
&lt;br /&gt;
=== Mosquitto MQTT Broker ===&lt;br /&gt;
Basic setup is easy, getting secure TLS to work not quite so.&lt;br /&gt;
&lt;br /&gt;
==== Preparation ====&lt;br /&gt;
With leap 15 mosquitto is provided with the standard repositories.&lt;br /&gt;
Older suse versions need to add a repo (e.g. http://download.opensuse.org/repositories/network:/messaging:/mqtt/openSUSE_Leap_42.2/)&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
 sudo zypper in mosquitto mosquitto-clients&lt;br /&gt;
 systemctl enable mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Configuration ====&lt;br /&gt;
Provide a file /etc/mosquitto/conf.d/tls.conf&lt;br /&gt;
&lt;br /&gt;
 # for my local unencrypted clients anonymous is ok&lt;br /&gt;
 allow_anonymous          true&lt;br /&gt;
 # This would require the cert cn or username in the passwd file&lt;br /&gt;
 # allow_anonymous          false&lt;br /&gt;
 # password_file /etc/mosquitto/passwd&lt;br /&gt;
 port 1883&lt;br /&gt;
 &lt;br /&gt;
 # additional listener for TLS&lt;br /&gt;
 listener 8883&lt;br /&gt;
 &lt;br /&gt;
 # my own ca so the broker can trust my clients&lt;br /&gt;
 cafile /etc/mosquitto/ca_certificates/ca.crt&lt;br /&gt;
 &lt;br /&gt;
 # my official lets encrypt cert so clients can trust the broker&lt;br /&gt;
 certfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/fullchain.pem&lt;br /&gt;
 keyfile /etc/letsencrypt/live/banzhaf.chickenkiller.com/privkey.pem&lt;br /&gt;
 &lt;br /&gt;
 # TLS needs client certificate (of my ca) to allow access&lt;br /&gt;
 require_certificate      true&lt;br /&gt;
 use_identity_as_username true&lt;br /&gt;
 &lt;br /&gt;
 use_username_as_clientid true &lt;br /&gt;
 &lt;br /&gt;
 # additional listener. Some clients only talk websockets&lt;br /&gt;
 listener 9001&lt;br /&gt;
 protocol websockets&lt;br /&gt;
&lt;br /&gt;
==== Start Mosquitto Service ====&lt;br /&gt;
 systemctl start mosquitto&lt;br /&gt;
&lt;br /&gt;
==== Example Usage ====&lt;br /&gt;
* Subscribe to all topics of local mosquitto broker&lt;br /&gt;
 mosquitto_sub -v -t \#&lt;br /&gt;
* Publish message &amp;quot;hello&amp;quot; to topic &amp;quot;world&amp;quot; on local mosquitto broker&lt;br /&gt;
 mosquitto_pub -m hello -t world&lt;br /&gt;
* Publish securely via TLS&lt;br /&gt;
 mosquitto_pub -h banzhaf.chickenkiller.com -p 8883 -m hello -t safeworld \\&lt;br /&gt;
   --cafile /etc/ssl/certs/DST_Root_CA_X3.pem \\&lt;br /&gt;
   --cert mqtt1@banzhaf.chickenkiller.com.crt \\&lt;br /&gt;
   --key mqtt1@banzhaf.chickenkiller.com.key&lt;br /&gt;
&lt;br /&gt;
** banzhaf.chickenkiller.com is the broker server with a valid Lets Encrypt server certificate&lt;br /&gt;
** 8883 is the TLS listening port of the broker&lt;br /&gt;
** hello is the published message &lt;br /&gt;
** safeworld is the topic (category) where the message is published&lt;br /&gt;
** /etc/ssl/certs/DST_Root_CA_X3.pem is the CA certificate of Lets Encrypt&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.crt is a client certificate issued by my own CA&lt;br /&gt;
** mqtt1@banzhaf.chickenkiller.com.key is the encryption key of the client certificate&lt;br /&gt;
&lt;br /&gt;
==== Common Errors ====&lt;br /&gt;
* Every TLS client needs its own certificate, because else they disconnect eachother&lt;br /&gt;
* Don&#039;t forget to restart the broker if there is a new server certificate (every 90 days)&lt;br /&gt;
* On errors with the server certificate, you loose connection with this message (server log says: GET_CLIENT_HELLO:unknown protocol)&lt;br /&gt;
 Error: The connection was lost.&lt;br /&gt;
* On errors with the client certificate, you loose connection with this message (server log says: peer did not return a certificate)&lt;br /&gt;
 Error: A TLS error occurred.&lt;/div&gt;</summary>
		<author><name>0:0:0:0:0:0:0:1</name></author>
	</entry>
</feed>