Metainformationen zur Seite

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modifikationen_hacks:mbus2mqtt [2023/03/25 20:46] – [Installation] Andreas Ranaldermodifikationen_hacks:mbus2mqtt [2023/03/30 22:44] (aktuell) Andreas Ranalder
Zeile 17: Zeile 17:
   * MBUS Master   * MBUS Master
     * USB: [[https://www.aliexpress.com/item/1005004863868466.html?spm=a2g0o.order_list.order_list_main.5.1f191802p7BtNX]]  ~25 Euro     * USB: [[https://www.aliexpress.com/item/1005004863868466.html?spm=a2g0o.order_list.order_list_main.5.1f191802p7BtNX]]  ~25 Euro
 +    * oder
     * TTL: [[https://www.aliexpress.com/item/4000020182211.html?spm=a2g0o.order_list.order_list_main.21.1f191802p7BtNX]] ~18 Euro     * TTL: [[https://www.aliexpress.com/item/4000020182211.html?spm=a2g0o.order_list.order_list_main.21.1f191802p7BtNX]] ~18 Euro
  
Zeile 182: Zeile 183:
 </WRAP> </WRAP>
  
 +== Auslese Script erstellen ==
  
-Jetzt bist du schon fast durch und es wird Zeit das ganze in eine ausführbare Datei zu packen "read_send_meters_mqtt.sh"+Jetzt bist du schon fast durch und es wird Zeit das ganze in eine ausführbare Datei zu packen "read_send_meters_mqtt.sh". Geh dazu in den mbus pfad, erstelle eine leere Datei namens read_send_meters_mqtt.sh und gib der datei die ausführungs rechte:
  
 <WRAP box> <WRAP box>
-#!/bin/bash+cd /opt/loxberry/bin/plugins/mbus
  
-ADDRESS_FILE=~/addresses.txt +touch read_send_meters_mqtt.sh
-BAUDRATE=2400 +
-DEVICE=/dev/ttyUSB0 +
-MQTT_HOST=192.168.1.10 +
-MQTT_USER=loxberry +
-MQTT_PASS=your_mqtt_passowrd +
-MQTT_TOPIC=mbusmeters+
  
-if [ ! -f $ADDRESS_FILE ]; then +chmod u+x read_send_meters_mqtt.sh 
-    mbus-serial-scan-secondary -b $BAUDRATE $DEVICE \ +</WRAP>
-        | sed -e 's/^.*y address \([0-9A-Fa-f]\+\) .*$/\1/' $ADDRESS_FILE +
-fi+
  
-echo -e "\n $(date)" +Anschliessend kannst du die Datei mit dem Texteditor nano öffnen und den Inhalt aus dieser Datei kopieren: 
-echo "Sending data to host $MQTT_HOST as user '$MQTT_USER' using topic '$MQTT_TOPIC/'."+{{ :modifikationen_hacks:read_send_meters_mqtt.zip |}} 
 +<WRAP box> 
 +nano read_send_meters_mqtt.sh 
 +</WRAP>
  
-while read ameter +Anschliessend sollst du den Text natürlich noch deinem System anpassenEditiere dazu mindestens BAUDRATE, MQTT_HOST und MQTT_PASS
-do +Nach dem Speichern der Datei kannst du diese kurz testet: 
-    echo -n "Getting data from $ameter..." +<WRAP box> 
-    # The sed is for replacing the @ with _ to be able to match on it in HASS templates +loxberry@loxberry:~/bin/plugins/mbus/bin $ ./read_send_meters_mqtt.sh
-    METER_DATA=$(mbus-serial-request-data-multi-reply -b $BAUDRATE $DEVICE $ameter | xq . | sed -e "s/@/_/") +
-    # echo -e "\n$METER_DATA" +
-    /usr/bin/mosquitto_pub -h $MQTT_HOST -u $MQTT_USER -P $MQTT_PASS \ +
-        -t $MQTT_TOPIC/$ameter -m "${METER_DATA}" +
-    BYTCNT=$(echo "$METER_DATA" | wc -c) +
-    echo "  $BYTCNT bytes sent" +
-    echo "$METER_DATA" | jq '{  +
-        id          : .MBusData.SlaveInformation.Id,  +
-        manufacturer: .MBusData.SlaveInformation.Manufacturer,  +
-        medium      : .MBusData.SlaveInformation.Medium,  +
-        records     : .MBusData.DataRecord | length  }' +
-done < <(cat $ADDRESS_FILE)+
  
 + Sat Mar 25 20:01:17 GMT 2023
 +Sending data to host 192.168.1.10 as user 'loxberry' using topic 'mbusmeters/'.
 +Getting data from 21013154E22E3103...  725 bytes sent
 +{
 +  "id": "21013154",
 +  "manufacturer": "GWF",
 +  "medium": "Gas",
 +  "records": 2
 +}
 +
 +loxberry@loxberry:~/bin/plugins/mbus/bin $
 </WRAP> </WRAP>
  
-<nspages -h1 -subns -exclude:start>+Am besten vorher noch kurz den MQTT Explorer starten, damit ihr seht, ob da was daher kommt: 
 + 
 +{{:modifikationen_hacks:mqtt_explorer_mbus.png?200|}} 
 + 
 +Die Daten kann man wie üblich mit dem Loxberry MQTT Plugin und einem virtualen TCP oder UDP eingang nochher ins loxone übernehmen. 
 + 
 +Das Script "read_send_meters_mqtt.sh" sucht beim ersten Start den Bus ab und fügt die gefundenen Geräte der Datei "~/config/plugins/mbus/addresses.txt" hinzu. Wenn das Script startet und diese Datei bereits existiert, wird nicht erneut gescannt und lediglich die Adressen in der Datei abgefragt. Wenn ihr also weitere Geräte abfragen möchtet, dann müsst ihr die Datei einfach vor dem nächsten ausführen löschen: 
 +<WRAP box> 
 +rm ~/config/plugins/mbus/addresses.txt 
 +</WRAP> 
 + 
 +== Automatisierte Abfrage erstellen == 
 + 
 +So wenn alles funktioniert und man mit dem ganzen zufrieden ist, wird es an der Zeit diesen Script automatisch zu starten. Dies kann man mit einem crontab machen: 
 +<WRAP box> 
 +crontab -
 +</WRAP> 
 + 
 +Und dann dort folgendes anfügen: 
 +<WRAP box> 
 +PATH=$PATH:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 
 +LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 
 +*/5 * * * *   cd /opt/loxberry/bin/plugins/mbus && ./read_send_meters_mqtt.sh >> /opt/loxberry/log/mbus_mqtt.log 
 +</WRAP> 
 +Dann wird ins verzeichnis gewechselt und alle 5min das script ausgeführt. Der Autput wird ins /opt/loxberry/log/mbus_mqtt.log geschrieben. 
 +