MQTT2 Device anlegen für DIY Toniebox

Begonnen von willib, 21 Januar 2019, 10:23:02

Vorheriges Thema - Nächstes Thema

willib

Ich versuche die DIY Toniebox nachzubauen.
Dazu habe ich in FHEM einen MQTT2 Server aufgesetzt:
Internals:
   CONNECTS   29
   DEF        1883 global
   FD         89
   NAME       MQTT2_SERVER
   NR         503
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   READINGS:
     2019-01-21 10:13:05   nrclients       1
     2019-01-21 09:59:10   state           Initialized
   clients:
     MQTT2_SERVER_192.168.178.57_49158 1
   retain:
Attributes:
   autocreate 1

Komischerweise wurde für jedesmal den gleichen RFID Tag auflegen ein neues MQTT2_DEVICE angelegt. Insgesamt 3 die so aussahen
MQTT2_NodeMCUClient_4c0b
MQTT2_NodeMCUClient_aec6
MQTT2_NodeMCUClient_f8ba

Ich habe diese devices erstmal alle wieder gelöscht. Jetzt bekomme ich aber keine neuen mehr angelegt.
Es stand sonst auch connected als state beim Server.
Was muss ich tun?
Dankeschön

Edit: Titel geändert
Ich versuche diese Projekt nachzubauen: https://haus-automatisierung.com/projekt/2018/12/16/projekt-playbox-mqtt-fhem-spotify.html

Die Topics sollten sein
/SmartHome/Interface/PlayBox/Play
/SmartHome/Interface/PlayBox/Stop


Das habe ich im log. Ist das Normal?
2019.01.21 10:35:35 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49202/NodeMCUClient-20e5 left us (keepalive check)
2019.01.21 10:36:05 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49203/NodeMCUClient-147a left us (keepalive check)
2019.01.21 10:36:35 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49204/NodeMCUClient-bc51 left us (keepalive check)
2019.01.21 10:37:05 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49205/NodeMCUClient-2009 left us (keepalive check)
2019.01.21 10:37:35 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49206/NodeMCUClient-2fbf left us (keepalive check)
2019.01.21 10:38:06 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49207/NodeMCUClient-f139 left us (keepalive check)
2019.01.21 10:38:36 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49208/NodeMCUClient-274e left us (keepalive check)
2019.01.21 10:39:06 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49209/NodeMCUClient-ed51 left us (keepalive check)
2019.01.21 10:39:36 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49210/NodeMCUClient-e196 left us (keepalive check)
2019.01.21 10:40:06 3: MQTT2_SERVER: MQTT2_SERVER_192.168.178.57_49211/NodeMCUClient-610d left us (keepalive check)

FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

Beta-User

Zitat von: willib am 21 Januar 2019, 10:23:02
Was muss ich tun?
Du _solltest_
- einen anderen, aussagefähigen Titel für den Thread wählen;
- erklären, wie deine Toniebox MQTT-mäßig kommuniziert - was du schreibst klingt es danach, dass die CID teilweise aus dem RFID-Tag gebildet wird;
- lists liefern von den devices, die autocreate angelegt hatte (die werden vermutlich wieder von autocreate angelegt, wenn du FHEM neu startest).

Grundsätzlich: Was eine eigene CID hat, dürfte am Ende auch immer in einem eigenen Device landen.
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

willib

#2
Danke für die Schnelle Antwort

Die Topics enthalten die Tag Nummer. CID, weiß ich nicht.
Die devices werden nicht neu angelegt. Allerdings habe ich diverse Meldungen im LOG(siehe update erster Post)
Wenn ich mir das device manuell anlege sollte es doch bei einem bleiben. Das habe ich versucht:
Internals:
   DEVICETOPIC /SmartHome/Interface/PlayBox/+
   IODev      MQTT2_SERVER
   NAME       WilliBox
   NR         507
   STATE      ???
   TYPE       MQTT2_DEVICE
Attributes:
   IODev      MQTT2_SERVER
   devicetopic /SmartHome/Interface/PlayBox/+
   room       MQTT2_DEVICE
   subscribeReading_play /SmartHome/Interface/PlayBox/Play
   subscribeReading_stop /SmartHome/Interface/PlayBox/Stop
   userattr   subscribeReading_play subscribeReading_stop


EDIT

Es wurde nun doch ein neues device per autcreate angelegt:
Internals:
   CFGFN     
   CID        NodeMCUClient_c43e
   DEF        NodeMCUClient_c43e
   DEVICETOPIC MQTT2_NodeMCUClient_c43e
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_MSGCNT 2
   MQTT2_SERVER_TIME 2019-01-21 11:07:35
   MSGCNT     2
   NAME       MQTT2_NodeMCUClient_c43e
   NR         749
   STATE      ???
   TYPE       MQTT2_DEVICE
   READINGS:
     2019-01-21 11:07:33   Play            1772801878
     2019-01-21 11:07:35   Stop            1
Attributes:
   IODev      MQTT2_SERVER
   readingList NodeMCUClient_c43e:/SmartHome/Interface/PlayBox/Play:.* Play
NodeMCUClient_c43e:/SmartHome/Interface/PlayBox/Stop:.* Stop
   room       MQTT2_DEVICE
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

Beta-User

Hmmm.

Also grundsätzlich finde ich es suboptimal, die CID zu verändern, da würde ich dafür plädieren, das tunlichst zu unterlassen, u.A. wg. der Meldungen im log. (Schon klar, dass du dazu ggf. den Code auf der NodeMCU anpassen mußt und das nicht so einfach ist; aber m.E. ist das - und einiges mehr - ziemlich unglücklich gelöst mit der Zufallszahl hier: clientId += String(random(0xffff), HEX);).

Schreib da erst mal was sinnvolles hardcoded rein (wie wäre es mit der ESP-Chip-ID, dann ist der Code dynamisch?).

Dann sollte es m.E. so sein, dass jede CardID auch einen eigenen Zweig im topictree bekommt und dann als _payload_ Play bzw. Stop kommt; dann kannst du nämlich für jede Karte direkt auch ein Reading mit demselben Namen anlegen. Da immer nur eine Karte aufgelegt sein kann, sollte eigentlich dann immer ein Stop-Event vor dem nächsten Play kommen.

Ggf. kannst du dann das Teil mit einer bridgeRegexp versehen, um aus jedem Tag ein einzelnes Device zu machen, oder du packst das jeweils in eigene Readings am "NodeMCU-Device". Den Ansatz, da über userattr zu gehen (oder userReadings), finde ich im ersten Angang mal suboptimal, ohne das näher analysieren zu können.
Und der Threadtitel ist immer noch unglücklich?

Wie wäre es mit: "Wie Toniebox als MQTT2 Device konfigurieren?"
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

masterpete23

Bitte verlink mal die DIY Toonie

willib

#5
Danke Beta-User, dass du dir die Zeit genommen hast auch in den Code vom ESP zu schauen.
Ich habe die CID jetzt fest auf WilliBox geändert. Jetzt klappt es. Die readings werden aktualisiert wenn ich einen Tag auflege.
Für deine Anderen Anmerkungen muss ich tiefer einsteigen.
Ich teste weiter.
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

willib

#6
Zitat von: masterpete23 am 21 Januar 2019, 11:47:31
Bitte verlink mal die DIY Toonie
Es gibt einen Forum Thread dazu
https://forum.fhem.de/index.php?topic=95552.0
aber ich versuche eigentlich im ersten Schritt nur das
https://haus-automatisierung.com/projekt/2018/12/16/projekt-playbox-mqtt-fhem-spotify.html
Ausgabe dann später wenn ich die Events in FHEM habe per Sonos.
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD