eBus Schaltung in Betrieb nehmen

Begonnen von Reinhart, 23 Dezember 2015, 15:19:45

Vorheriges Thema - Nächstes Thema

americanium

#1350
So ich glaub ich bin jetzt einen Schritt weiter, wenn ich es richtig sehe wird nur slave9 nicht erkannt ?

loxberry@loxberry:~ $ ebusctl i
version: ebusd 3.2.v3.2-12-g45b9bad
signal: acquired
symbol rate: 23
max symbol rate: 112
min arbitration micros: 1132
max arbitration micros: 3587
min symbol latency: 4
max symbol latency: 14
reconnects: 0
masters: 4
messages: 406
conditional: 0
poll: 0
update: 9
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=HMU00;SW=0305;HW=0403", loaded "vaillant/08.hmu.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=70000;SW=0419;HW=4603", loaded "vaillant/15.700.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd
address 71: master #9
address 76: slave #9, scanned "MF=Vaillant;ID=VWZ00;SW=0305;HW=0403"


in der ebusd steht jetzt
EBUSD_OPTS="-d /dev/ttyUSB0 -p 8888 -l /var/log/ebusd.log --scanconfig --configpath=http://ebusd.eu/config/

Sobald ich aber wie bei Reinhart das '-c' nach '-scanconfig' setze kommt wieder


error connecting to localhost:8888


Ach wenn ich den Befehl erweitere wie bei Reinhart (die mqtt befehle), kommt die selbe meldung...

UPDATE: ebusd neu installiert mit vorheriger Installation des libmosquitto-dev nun sind die Befehle abrufbar... ABER mit der vorher funktionierenden EBUSD Datei geht jetzt wieder nicht mal mehr die Grundfunktionen von vorher... 

2018-11-28 23:42:27.585 [main error] invalid configpath without scanconfig


Also das ist mir jetzt ein Rätsel

john30

Zitat von: americanium am 28 November 2018, 17:32:13
2018-11-28 23:42:27.585 [main error] invalid configpath without scanconfig

das sieht so aus, als hättest Du einfach "ebusd" auf der Kommandozeile eingegeben, was per se nicht funktionieren kann. Was willst Du damit erreichen? Den Dienst starten geht so nicht und die Parameter aus /etc werden so auch nicht verwendet...
author of ebusd

americanium

Okay, danke, dachte da kommt wie bei anderen befehlen dann eine Info, dass noch Parameter fehlen.
Dann scheint das Ding jetzt zu laufen, frag mich nur was mit slave #9 ist, ist da keine CSV notwendig oder gibts die nicht ?

address 08: slave #11, scanned "MF=Vaillant;ID=HMU00;SW=0305;HW=0403", loaded "vaillant/08.hmu.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=70000;SW=0419;HW=4603", loaded "vaillant/15.700.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd
address 71: master #9
address 76: slave #9, scanned "MF=Vaillant;ID=VWZ00;SW=0305;HW=0403"


Kämpfe gerade mit der Konfiguration des MQTT, alles Neuland :)

john30

Zitat von: americanium am 30 November 2018, 11:11:19
Dann scheint das Ding jetzt zu laufen, frag mich nur was mit slave #9 ist, ist da keine CSV notwendig oder gibts die nicht ?
für VWZ haben wir noch keine Konfiguration
author of ebusd

americanium

d.h. ? wie kann man die bekommen ?

john30

author of ebusd

americanium

Okay, werde mir das mal näher ansehen wenn alles andere mal läuft.

Derzeit kämpfe ich noch mit MQTT und bitte nicht auf dein wiki verweisen, das hilft mir nicht mehr weiter :)
Ich verstehe nämlich nicht wie genau die Topic Angabe ausgeführt sein muss und was genau ich dann im subscriben muss ?!

--mqtttopic=sonoff_ebusd/%name"

was ist sonoff ?
%name ?

Eine gute Beschreibung findet sich da im google auch nicht..

Reinhart

#1357
Du kannst die Topic nennen wie du willst, nenne sie doch "loxberry" wenn du willst. Sonoff ist ja nur der Name der Topic im Beispiel.

In meinem Beispiel habe ich sie deswegen "sonoff" genannt, weil ich schon einige Geräte mit dieser Topic im System habe und auf diesen Namen ein Filter (expandJSON)gesetzt habe, deswegen habe ich diese Namen gewählt und brauche somit nur ein Filter für alle MQTT Geräte. Du brauchst ja dann bei den Beispielen nur "sonoff" mit "loxberry" ersetzen und schon funktioniert alles.

--mqtttopic=loxberry/%name"

Die Topic setzt sich zusammen aus "loxberry"/"Name_des_Device"

Setze einfach eine Topic und schaue es dir am Broker an wie das MQTT Telegramm dann ankommt, das ist am einfachsten um das zu richtig verstehen.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

americanium

#1358
Okay, nur was genau ist dann der "Name_des_device"?


Reinhart

#1359
Ich sehe du hast am Broker noch nie gelauscht, sonst hättest du es schon gesehen was da kommt.

mosquitto_sub -d -v -t \#
am Broker mitloggen und schauen was kommt

Client mosqsub/13058-smarthome received PUBLISH (d0, q0, r0, m0, 'sonoff_ebusd/Status01', ... (271 bytes))
sonoff_ebusd/Status01 {
     "0": {"name": "temp1", "value": 39.0},
     "1": {"name": "temp1", "value": 39.0},
     "2": {"name": "temp2", "value": 0.312},
     "3": {"name": "temp1", "value": 36.0},
     "4": {"name": "temp1", "value": 39.0},
     "5": {"name": "pumpstate", "value": "off"}}
Client mosqsub/13058-smarthome received PUBLISH (d0, q0, r0, m0, 'sonoff_ebusd/outsidetemp', ... (34 bytes))
sonoff_ebusd/outsidetemp {
     "temp2": {"value": -1.438}}

in diesem Rohformat kommen die Mqtt Strings am Broker an weil ich das Format "--mqttjson" in der Default angegeben habe.

Hier im Beispiel konzentrieren wir uns auf den Status01 vom eBus.
sonoff_ebusd/Status01 = die Topic die in der Config angegeben wurde und %Name entspricht hier "Status01", also zu vergleichen wie der Gerätename (

Die Messwerte selbst werden hier in 6 "values" übertragen (Vorlauf, Rücklauf, etc).

und hier in meinem Beispiel des Stats01 siehst du wie ich die Values mit Stateformat einfach als Text ausgebe.
###########################   eBus MQTT  ##############################
define ebus_status MQTT_DEVICE
attr ebus_status IODev myBroker
attr ebus_status event-on-change-reading .*
attr ebus_status icon icoTempHeizung
attr ebus_status room Entwicklung
attr ebus_status stateFormat {sprintf("Vorlauf: %.1f Ruecklauf: %.1f Warmwasser: %.1f Aussentemp.: %.1f Pumpe: %s", ReadingsVal($name,"0_value",0), ReadingsVal($name,"1_value",0), ReadingsVal($name,"3_value",0), ReadingsVal($name,"2_value",0), ReadingsVal($name,"5_value",0))}
attr ebus_status subscribeReading_Status01 sonoff_ebus/bai/Status01
das wären die Broadcast die automatisch ankommen, die werden auch im Timer nicht definiert da sie ohnehin alle paar Sekunden ankommen.



aber das alles steht in den beiden Links (MQTT Teil1+2) im ersten Post einrichten V2. Im angehängten Bild siehst du die Ausgabe des Status01.
MQTT Teil1 einrichten Test
MQTT Teil2 automatische Abfragen

MQTT Client Johns Wiki

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

americanium

Doooch ich lausche bereits und habs auch geschafft die global/uptime zu übergeben.

Was mir aber nicht eingeht ist, wie ich nun die spezifischen Werte weiterleite wie Heizkurve, Temperaturen, ....

Sorry, für die Mühe :/

Reinhart

in FHEM gibt es das Modul expandJSON, das tröselt die einzelnen Values in Readings auf.

define ej3 expandJSON (loxberry.*:.*:.{.*.*{.*.*}})
Dieses Filter erzeugt aus jedem Value ein Reading (siehe Bild)

Ob das im Loxberry auch funktioniert kann ich nicht sagen weil ich den nicht kenne.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

americanium

#1362
Oh falsch ausgedruckt von mir, so wie mir es scheint, sehe im am MQTT "Monitor" nicht alle Werte des Ebus, speziell Vaillant.
Sehe:nur
"Status01"
"ebusd/DateTime"
"ebusd/vdatetime"
"ebusd/global/uptime"

die wiederholen sich.

EDIT: Ich glaube langsam komm ich dahinter... es werden nicht alle Werte automatisch als MQTT übertragen, ich muss sie anfordern ?

EDIT2: Kann ich irgendwie umgehen, dass er nur die geänderte Values erneut sendet ? Gerade für Testzwecke wäre es super Werte öfter als MQTT versenden zu können als nur dann wenn der Wert anders ist. Derzeit wenn ich ebusctl r -f HwcOpMode oder auch andere versuche wird der Wert nur einmal versendet, außer der Wert ändert sich

Reinhart

#1363
Ja genau, das hast du richtig erkannt.
Die Werte die automatisch kommen sind nur die Broadcast Meldungen!

Es gibt dann mehrere Wege die Daten zyklisch anzufordern, hier ist eine beschrieben.
Bevor du das codierst, einfach vorher in der Konsole testen!

Beispiel Außentemperatur abholen
pi@raspberrypi:~ $ ebusctl r -f outsidetemp  (holt den ganzen String)
-2.62;ok
pi@raspberrypi:~ $ ebusctl r -f outsidetemp temp   (holt nur den Value temp)
-2.62

Eingabe in der Konsole

entspricht Perl Code
#!/usr/bin/perl
# Aussentemperatur
get Aussentemp cmd {"r -f outsidetemp temp\n"}
get Aussentemp expect ".*\n*"
get Aussentemp postproc { $_ }


define EBUS.Timer at +*00:05:00 get Aussentemp Aussentemp
Timersteuerung holt alle 5 Minuten die Aussentemperatur ab

LG
Reinhart
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

americanium

#1364
loxberry@loxberry:~ $ ebusctl r -f OutsideTemp temp
ERR: element not found


es funkt nur:

loxberry@loxberry:~ $ ebusctl r OutsideTemp
-1.125


Hab auch noch folgendes Problem, falls es eines ist ;)

loxberry@loxberry:~ $ mosquitto_pub -u loxberry -P PASSWORD -q 2 -t loxberry/700/HwcOpMode/get -m "ebusctl r -f HwcOpMode"

ergibt im Monitor

Client mosqsub/13384-loxberry received PUBLISH (d0, q0, r0, m0, 'loxberry/700/HwcOpMode/get', ... (22 bytes))
loxberry/700/HwcOpMode/get ebusctl r -f HwcOpMode