Ich habe ein neues Skript geschrieben welches nun nicht mehr direkt die Tasmota Geräte per http Kommandos abfragt sondern dieses über mosquitto und MQTT tut.
Getestet habe ich nur mit Raspberrymatic und dem mosquitto addon
https://github.com/hobbyquaker/ccu-addo ... o/releases.
Das Skript ist auf github zu finden: https://github.com/FrodoVDR/mqtt-ccu/releases/ .
Bisher kennt es folgende Sensoren ENERGY, DS18B20, AM2301, BMP280, BME280 und BH1750 .
Es können maximal zwei Sensoren gleichzeitig an einem Tasmota Gerät abgefragt werden, wobei der zweite Sensor bei gleichen Werten wie zum Beispiel temperatur den ersten überschreibt.
Ich habe bei mir mein sonoff.sh komplett durch das neue mqtt.sh ersetzt.
Der Vorteil des neuen Skriptes ist das man die IP-Adresse des Tasmota Devices nicht mehr kennen muss. Es wird lediglich der Topic Name benötigt.
Das Skript ist hoffentlich selbst erklärend:
Code: Alles auswählen
usage:
mqtt.sh -c <CUX2801xxx:x> -t <TOPIC> [-o <value>] [-r <ccuname>] [-s <sensor>] [-n <number>] [-d]
mqtt.sh --channel <CUX2801xxx:x> --topic <TOPIC> [--value <value>] [--realname <ccuname>] [--sensor <sensor>] [--relaynumber <number>] [--debug]
OPTIONS
-c | --channel CUxD channel name
-t | --topic Tasmota device topic name
-o | --value Power cmnd [0 - off, 1 - on, 2 - toggle]
-r | --realname Actual name for the variable definition.
-s | --sensor Query of sensor data (ENERGY, DS18B20, AM2301, BMP280, BME280 and BH1750
-n | --relaynumber For devices with mor than one relay you can give the relay number.
-d | --debug Debug information and names for CCU systemvariables
PREREQUISITE
Raspberrymatic and mosquitto addon
EXAMPLE
mqtt.sh -c CUX2801006:1 -t tasmota-device -o 1
This command switches on the relay of the tasmota-device.
mqtt.sh -c CUX2801006:1 -t tasmota-device -o 0
This command switches off the relay of the tasmota-device.
mqtt.sh -c CUX2801006:14 -t display1 -r display1 -s BME280,BH1750
This command reads the status of the device with the topic display1 and the sensors BME280 and BH1750.
Since the real name was changed to display1, the following variables are set in the CCU.
display1-status, display1-ipaddr, display1-RSSI, display1-temperature, display1-pressure,
display1-seapressure, display1-humidity, display1-illuminance
In der CCU ist wie beim sonoff.sh Skript ein CUxD Gerät anzulegen.
Ich habe bei mir zwei Parameter verwendet im Beispiel meines Garten Gerätes:
SHORT: $_P1$ -c $CHANNEL$ -t $_C1$ -o 0 -r $_C2$ -s energy
LONG: $_P1$ -c $CHANNEL$ -t $_C1$ -o 1 -r $_C2$ -s energy
CMD_TIMER: $_P1$ -c $CHANNEL$ -t $_C1$ -r $_C2$ -s energy
Das Skript gibt an der Konsole für das Beispiel folgendes aus:
Code: Alles auswählen
mqtt.sh -c CUX2801006:2 -t garten -r Garten_Hauptschalter -s energy
-----------------------------------------------------------------------------------------------------
CCU Systemvariablen
-----------------------------------------------------------------------------------------------------
[Garten_Hauptschalter-status]: 1
[Garten_Hauptschalter-ipaddr]: 192.168.8.11
[Garten_Hauptschalter-RSSI]: -65
[Garten_Hauptschalter-total]: 83.27 kWh
[Garten_Hauptschalter-yesterday]: 0.249 kWh
[Garten_Hauptschalter-today]: 0.133 kWh
[Garten_Hauptschalter-power]: 8 W
[Garten_Hauptschalter-factor]: 0.44
[Garten_Hauptschalter-voltage]: 229 V
[Garten_Hauptschalter-ampere]: 0.074 A
Damit hat man auch gleich die Namen für die CCU Systemvariablen.
Für andere Sensoren ist das Skript sehr leicht erweiterbar. Falls ich behilflich sein soll benötige ich die Debug Ausgaben des Skriptes, den dort findet man auch alle Werte die ich zur Zeit heraus filtern kann:
Code: Alles auswählen
StatusNET: {"StatusNET":{"Hostname":"garten-hauptschalter","IPAddress":"192.168.8.11","Gateway":"192.168.8.1","Subnetmask":"255.255.255.0","DNSServer":"192.168.8.1","Mac":"5C:CF:7F:7F:FB:9F","Webserver":2,"WifiConfig":0,"WifiPower":17.0}}
StatusSNS: {"StatusSNS":{"Time":"2020-06-28T17:47:59","ENERGY":{"TotalStartTime":"2018-11-03T15:51:28","Total":83.271,"Yesterday":0.249,"Today":0.134,"Power":11,"ApparentPower":22,"ReactivePower":19,"Factor":0.50,"Voltage":227,"Current":0.097}}}
StatusSTS: {"StatusSTS":{"Time":"2020-06-28T17:47:59","Uptime":"3T22:58:34","UptimeSec":341914,"Heap":25,"SleepMode":"Dynamic","Sleep":200,"LoadAvg":5,"MqttCount":6,"POWER":"ON","Wifi":{"AP":1,"SSId":"IoT","BSSId":"E2:63:DA:13:81:9A","Channel":13,"RSSI":72,"Signal":-64,"LinkCount":4,"Downtime":"0T00:00:36"}}}
Da das Skript gerade ein paar Tage alt ist, ist es sicherlich noch nicht zu 100 % getestet. Für mich ist der Ansatz über MQTT deutlich flexibler, zumal ich auch von anderen Smarthome Lösungen über MQTT die Aktoren abfragen und ansteuern kann und sowieso einen zentralen MQTT Server hatte.
Hier noch ein Bespiel von ein paar Geräten: