[GELÖST] Überwachung / Zugriff auf zweiten Raspi

Begonnen von Markus., 12 Dezember 2019, 10:49:59

Vorheriges Thema - Nächstes Thema

Beta-User

 :)
Klar, warum sollte MQTT2_DEVICE das nicht machen...

Tendiere aber dazu, den STATUS und ggf. (empfangsseitig....) den COMMAND-Pfad hinten anzufügen, und das dann bei der Auswertung in MQTT2_DEVICE anders zu lösen (readingList-Eintrag, wieder "auf Verdacht"):
home/GPIO18/states {{"GPIO18"=>$EVENT?"on":"off"}}
oder gleich generalisiert:
home/([^/]+)/states {{"$1"=>$EVENT?"on":"off"}}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Markus.

genial :-) Ja genau so teste ich das. Muss es generalisiert machen mit dem Reading sonst müsste ich für jeden möglichen Pin manuell eins anlegen oder?
Im Skript wird ja die Pin Nummer geändert, je nachdem wer seinen Level geändert hat. Und eben für jeden pin der seinen Level geändert hat ein reading angelegt werden soll.
Was mir ehrlich gesagt nur nicht ganz klar ist ... was meinst Du denn mit dem COPMMAND-Pfad? :-(


Beta-User

Na ja, vermutlich willst du den GPIO auch von FHEM aus steuern können ;) . Warum dann nicht über MQTT, dann ist alles beieinander...?
Dafür wäre es nur wichtig, dass ein "Kreis" entsteht, also die Anweisung auf einem anderen Topic-Pfad liegt wie die Rückmeldung (deine heutige/gerade zu entwickelnde Statusmeldung). Dafür würde ich dann
home/GPIO18/set mit Payload 0 bzw. 1 vorschlagen...
Hat den Vorteil, dass du ggf. dann auch nur einzelne Teile abbonieren kannst, wenn du den MQTT-Verkehr "von außen" mithören willst. Ist zwar für so ein "kleines" Device nicht soooo wichtig, aber es geht ja auch ein bischen darum, eine Referenz zu haben, falls mal was größeres ansteht oder jemand das beim Suchen findet...

Für den Fall, dass die komplizierte Variante nicht klappt, für den empfangsseitigen Testen auch noch eine einfachere Variante. Da schreibst du einfach den gewünschten Readingnamen dahinter, Zustand ist dann 0 bzw. 1:
home/GPIO18/states GPIO18
(Hoffe, das Prinzip wird jetzt etwas klarer, wie die Verarbeitung innerhalb des Moduls abläuft.)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Markus.

#33
mmh habs jetzt mal getestet. Er erzeugt zwar das Reading zb. GPIO22 aber den Wert 0 oder 1 zeugt er nicht an :-(


defmod MQTT2_LISAGW2 MQTT2_DEVICE LISAGW2
attr MQTT2_LISAGW2 DbLogExclude .*
attr MQTT2_LISAGW2 IODev MQTT2_Server
attr MQTT2_LISAGW2 readingList LISAGW2:home/([^/]+)/states {{"$1"=>$EVENT?"on":"off"}}\
LISAGW2:home/states/GPIO22:.* GPIO22
attr MQTT2_LISAGW2 room MQTT2_DEVICE

setstate MQTT2_LISAGW2 2019-12-20 17:01:21 GPIO22

Wenn ich das Reading wie vorgeschlagen ändere, wird bei der nächsten Änderung des Levels, das alte Reading hinzgefügt.
LISAGW2:home/states/GPIO22:.* GPIO22
Gesendet (publish) wird der String wie folgt
home/states/GPIO22 1

aber der String der gepublshed wird ist doch so korrekt oder ?
topictree leerzeichen wert

Im Eventmonitor sieht das so aus

2019.12.20 17:28:53 4 : MQTT2_DEVICE_Parse: MQTT2_LISAGW2 home/states/GPIO22 => GPIO22
2019-12-20 17:28:53 MQTT2_DEVICE MQTT2_LISAGW2 GPIO22:



Gruß

Markus







Markus.

stop halt....
hab jetzt mal subscribed... da sieht das wie folgt aus

home/states/GPIO22 (null)

Also macht der beim Publish irgendwas anderes mit dem Wert als beim client.publish.
Nun dann wieder zurück zum Skript und dem Publish Befehl :-(

Markus.

so es wird nun wie folgt gepublished.

home/states/GPIO22 0 (null)
home/states/GPIO22 1 (null)
home/states/GPIO22 0 (null)
home/states/GPIO22: 0 (null)
home/states/GPIO22: 1 (null)
home/states/GPIO22: 0 (null)
home/states/GPIO22: 1 (null)
home/states/GPIO22: 0 (null)


Das mit dem Doppelpunkt habe ich noch ausporbiert, aber geht immer noch nicht. Also Reading wird erzeugt aber wert 0 oder 1 wird nicht angezeigt.
im Log sieht es so aus:

2019.12.20 17:46:33 3: MQTT2_LISAGW2: bad reading name 0:.* GPIO22_0 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:46:41 3: MQTT2_LISAGW2: bad reading name 1:.* GPIO22_1 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:46:46 3: MQTT2_LISAGW2: bad reading name 0:.* GPIO22_0 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:48:11 3: MQTT2_LISAGW2: bad reading name 0:.* GPIO22__0 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:48:21 3: MQTT2_LISAGW2: bad reading name 1:.* GPIO22__1 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:48:26 3: MQTT2_LISAGW2: bad reading name 0:.* GPIO22__0 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:49:46 3: MQTT2_LISAGW2: bad reading name 1:.* GPIO22__1 (contains not A-Za-z/\d_\.- or is too long)
2019.12.20 17:49:51 3: MQTT2_LISAGW2: bad reading name 0:.* GPIO22__0 (contains not A-Za-z/\d_\.- or is too long)



Markus.

so habe das Problem gefunden :-)
Es lag daran, wie das gepublished wird vom Skript.

home/states/GPIO22 0 (null)
home/states/GPIO22 0
home/states/GPIO22 1

Die Zeile mit dem (NULL) frisst der Broker irgendwie nicht.
Den Publish string im Skript habe ich dann anderes "zusammen gebaut" so das er auch nach der Syntax passt. die wie folgt aussehen muss:
client.publish("house/light","ON")
Das ganze sieht dann so aus:
client.publish (("home/states/GPIO{}".format(GPIO)),("{}".format(level))) 

Damit sollte dann eigentlich für jeden GPIO der nun seinen Status mal ändert ein neues Reading anglegt werden.
Dann wäre ich jetzt beim nächsten Schritt und zwar das Skript auf dem remote Raspi als service zu defineiren damit es auch immer schön läuft.

Gruß
Markus



Markus.

so läuft nun auch als Service.Nun bin ich gespannt wie stabil das ganze läuft.
Nochmals Danke an Otto und Beta-User :-)

Gruß

Markus

Otto123

Hallo Markus,

das freut mich. Den letzen gemeinsamen Part von Dir und Beta-User hab ich nur mitgelesen und muss den für mich mal noch verständlich machen / nacharbeiten :)

Schöne Weihnachten
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Zitat von: Markus. am 21 Dezember 2019, 18:10:26
so läuft nun auch als Service.Nun bin ich gespannt wie stabil das ganze läuft.
Nochmals Danke an Otto und Beta-User :-)

Gruß

Markus
Danke für die Rückmeldung!

Falls der Betrieb dann als "stabil" bezeichnet werden kann, wäre es nett, wenn du das ganze nochmal "nachbautauglich" zusammenfassen könntest; dann bau' ich's gerne in die "Praxisbeispiele" ein bzw. verlinke auf die Darstellung.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Markus.

Hallo Beta-User,

ich muss das Skript noch ändern, damit es auch permanent läuft. Im Moment wird die Verbindung zum Broker nach der Keep-alive Zeit beendet und das Skript muss neu gestartet werden. Ich wollte das diese Woche noch machen, dann kann ich die Infos liefern.

Viele Grüße

Markus

Beta-User

Hi Markus.,

kein Ding, eilt ja nicht, und wer schnell war braucht, kann ja hier auch nachfragen...

Danke jedenfalls schon mal vorab!
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors