PNG in MQTT Message und anschließend im Reading.

Begonnen von dr4g0n, 31 März 2019, 01:19:28

Vorheriges Thema - Nächstes Thema

dr4g0n

Hallo,

ich habe meinen Roborock gerootet und dort Valentudo installiert.
Die Software bietet die Möglichkeit einen MQTT Server anzubinden (durch FHEM bereitgestellt), das Device wurde automnatisch von FHEM generiert und auch erkannt.
Nun gibt es ein Reading welches sich "map" nennt und  in diesem scheint die aktuelle Karte zu liegen.

Hier ein kleiner ausschnitt aus dem Reading:

�PNG


IHDR����x�IDATx���qdK��s+����)#ʘgG�B�p%Im!����3�)���
G���l�*?�d2y�#�����l�*�ົ����G����AF� �4��[U���;���ʯ��٭�G����AF� ��G\ww6�U�7�3�亻�����8�d��}Ue7��[U���ϼ����uwgs_U��8�d�gZU����VU��ٝݪ�G������0#p�8����U����nU��[Uyevg����uwgs_U>�d2y��aUe7��[U� ��;/�WUv�;�U������ٝݪ�+�;���
�G��AF� #p�G�Ѯ�;�����ϼ���'����d2y�3���fwv�*��uwgs_U���|���G���VU>bv���;����+�;�U�����AF� ��5���fwv�*����Ou��;�lUe7����y麻���3����A�L�*�ٝݪ
��1��[Uyev����꺻�����U��g�[U�2����A�{��٭��fw~�U����nU��g�[U���|���nU8�d2y�m��;���


Wie kann ich dieses z.b. in ein Bild umwandeln und in FTUI anzeigen? Muss ich es erst im Hintergrund umparsen und dann speichern oder geht das direkt über FHEM?

Danke im vorraus.
Grüße
Pascal

Netvirus

Hi,

ich versuche auch über Valeduto und MQTT die map zu bekommen. Bei mir wurde das Device auch per autocreate erstellt. Allerdings habe ich bisher noch nicht geschafft die Map zu bekommen. Ist die bei dir direkt im reading drin? Muss man da erst etwas publishen, damit man die bekommt?

Viele grüße
Daniel

dr4g0n

Ich habe lediglich mit der Version 0.2.3 die MQTT Settings gefüllt, sobald der Robi losfährt wird die Karte alle x Sekunden per MQTT gesendet.

Florian_GT

Hat jemand von euch eine fertige config für Fhem und MQTT und Valetudo?
FHEM: Proxmox Server, FHEM in VM, pgSQL DB
Hardware: Ethersex (Pollin NETIO Boards), Diverse Tasmota MQTT Devices, Raspberry Pi Zero W Kameras, (Github RaspberryPiStreamingCamera), Zigbee2MQTT, ESPEasy

Development: UBA (Umwelt Bundesamt), BFS (Bundesamt für Strahlenschutz)

dr4g0n

#4
Also bei mir ist nun alles Prima :)

Ich nutze das normale Xiaomi FHEM Addon und beziehe damit die Werte vom Sauger.
Die Karte wird über ICantBeliveItsNotValetudo generiert (Der Sauger schickt alles per MQTT an den Broker, ICantBeliveItsNotValetudo subscribt und generiert die Map). Damit ich mir das FHEM nicht mit den MQTT Messages vom Sauger voll mülle habe ich 2 MQTT Broker am laufen, einmal mein normaler für FHEM&Devices und ein Trash Broker nur für den Sauger und die Map :) Zudem hab ich das ICantBeliveItsNotValetudo an einer Stelle erweitert, dass dort ein Reading in FHEM gesetzt wird mit dem aktuellen MapPath und einem Timestamp hinten dran. (mapURL http://FHEMSERVER:3001/api/map/image?_=1557499000596).

Wenn der Sauger nun läuft, werden alle Werte über FHEM ausgelesen und die Mapgenerierung startet. Wenn es ein MapUpdate gibt dann wird der Path incl. Timnestamp aktualisiert und durch den neuen Value wird das Image-Load im FTUI angetriggert. (wenn er saugt, dann jede Sekunde und im Idle nur alle x Minuten)

Somit habe ich immer die aktuelle Karte im FTUI, aber auch nur wenn es Updates gibt. :)

Vorteile:
- CPU-Auslastung für das Map erstellen wird vom Sauger auf ein schnelleres Gerät übertragen
- Durch das Render via ICantBeliveItsNotValetudo kann das Theme bzw die Farben der Karte angepasst werden (im RenderScript)
- Ich habe das Script etwas aufgebohrt, damit die Fehlerhaften-Scan Daten nicht mitgerendert werden :)
- Es wird lediglich die Datenbasis für die Map übermittelt und kein großes Bild, somit spart man auch Bandbreite zum Sauger

drhirn



drhirn

Oh, das habe ich bisher übersehen. Danke dir!

vbretsch

Zitat von: dr4g0n am 11 Mai 2019, 00:14:07
Also bei mir ist nun alles Prima :)


Somit habe ich immer die aktuelle Karte im FTUI, aber auch nur wenn es Updates gibt. :)


Das FTUI Widget sieht superelegant aus! Wärst Du vielleicht bereit den html-Source-Code hier zu posten?

Viele Grüße,
Volker

UHT

@dr4g0n

Finde deine Lösung auch sehr schick. Magst du da noch ein paar mehr Informationen raus rücken?
Wo läuft bei dir ICantBeliveItsNotValetudo? Was genau hast du da angepasst?
Auch den SourceCode vom Widget wäre gut

alf_85

Ich wäre auch an einer genaueren Beschreibung interessiert! Muss ich ICantBelieveItsNotValetudo auf dem ROBOROCK installieren? Das macht ja eigentlich wenig Sinn... aber wo genau gebe ich die IP des Saugers an? ::) ???

dr4g0n

Hallo,

das tool ICant..... wird auf einem Linux installiert, damit die CPU-Last zum rendern der Karte vom Robo herunter genommen wird.

Hier der Link mit meinen Anpassungen, leider ist es derzeit bei mir defekt, da die Koordinaten zum saubermachen der Karte aktualisiert werden müssen.
Ich habe den Code fix kommentiert.. ich hoffe man versteht es einigermaßen. zudem habe ich ein timestamp an dem bild dran, damit dieser geändert wird und FTUI das Bild nur neu läd, wenn ein eine Aktualisierung vorliegt.

https://pastebin.com/b2RhCu3n