• Cyber Weekend Special

    Erhalte 10% Rabatt auf deine in unserem WLANThermo Shop im Zeitraum vom 27.11. - 30.11.2020 bestellten Artikel, durch die Eingabe des Rabatt-Codes CYBER2020 im Checkout-Bereich.

    Cyber Weekend Special

ioBroker - WLANThermo Nano

tritor

Member
Habe aus dem MQTT data String, den SOC- (Batterieladezustand) und RSSI-Wert extrahiert.

Das Ganze habe ich folgendermaßen gemacht:

1. Datenpunkte anlegen:
Unter javascript.0 habe ich 2 neue Datenpunkte angelegt:
nano01.PNG
Als Typ habe ich Zahl genommen (man könnte auch String lassen wenn es nur zum die Anzeige als HTML Feld geht. Als Zahl kann man nette Grafiken
machen
nano02.PNG
2. Blockly-Skript für Parsen des MQTT Strings "data"
nano03.PNG

<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="vi!{H:unt`^A5NdzTYi#">Liste</variable>
</variables>
<block type="on_ext" id="/qOcr.UmBO{rUqi@=o3n" x="-737" y="-662">
<mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="@7bt`(1du#`tHi-bX4(1">
<field name="oid">mqtt.0.WLanThermo.NANO-33dff0.status.data</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="variables_set" id="enrJ8xwCo.ptmsP{Lv,H">
<field name="VAR" id="vi!{H:unt`^A5NdzTYi#">Liste</field>
<value name="VALUE">
<block type="lists_split" id="gEi{DY*l7=3}Ua0~Pk]}">
<mutation mode="SPLIT"></mutation>
<field name="MODE">SPLIT</field>
<value name="INPUT">
<block type="on_source" id="y1n*yK3qzMuxu@%:;]wl">
<field name="ATTR">state.val</field>
</block>
</value>
<value name="DELIM">
<shadow type="text" id="_Jr~l;XitMg62B0XBED7">
<field name="TEXT">,</field>
</shadow>
</value>
</block>
</value>
<next>
<block type="update" id="Beh2HN0C~:99aTdY55/G">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">javascript.0.WLanThermoNano.RSSI</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="convert_tonumber" id="GbK+`F?J7I}et=qFX/P5">
<value name="VALUE">
<block type="text_getSubstring" id="iAI$m:}D9_}mgF]x^{~!">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="lists_getIndex" id="hVYr/;L+x/z/$XITW#$1">
<mutation statement="false" at="true"></mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id="]OZ^fEe7~Rw=KJuqO+fq">
<field name="VAR" id="vi!{H:unt`^A5NdzTYi#">Liste</field>
</block>
</value>
<value name="AT">
<block type="math_number" id="xQjquqBE{q=YB+UP3fo:">
<field name="NUM">5</field>
</block>
</value>
</block>
</value>
<value name="AT1">
<block type="math_number" id="{Gzu|jc;z^}hyj-d$r09">
<field name="NUM">8</field>
</block>
</value>
<value name="AT2">
<block type="math_number" id="c/wVIP+43-fICsY:3v5a">
<field name="NUM">10</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="update" id="U5/w30$-~p}_eDJNHcj`">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">javascript.0.WLanThermoNano.SOC</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="convert_tonumber" id=",xq7@LpQyb_7/WExcHlt">
<value name="VALUE">
<block type="text_getSubstring" id="ATj90-Gk$rh6MB7dZaRs">
<mutation at1="true" at2="true"></mutation>
<field name="WHERE1">FROM_START</field>
<field name="WHERE2">FROM_START</field>
<value name="STRING">
<block type="lists_getIndex" id="CktBt?~}RYRTf.f5eQ8f">
<mutation statement="false" at="true"></mutation>
<field name="MODE">GET</field>
<field name="WHERE">FROM_START</field>
<value name="VALUE">
<block type="variables_get" id=":%q!m,x7IOp]N|IidSbn">
<field name="VAR" id="vi!{H:unt`^A5NdzTYi#">Liste</field>
</block>
</value>
<value name="AT">
<block type="math_number" id="ATd2v(=F6~/I@DL;+C48">
<field name="NUM">3</field>
</block>
</value>
</block>
</value>
<value name="AT1">
<block type="math_number" id="H90n,RUF0*CL{4LSYS3U">
<field name="NUM">7</field>
</block>
</value>
<value name="AT2">
<block type="math_number" id="*v/kwdv+=:).I1I%Y9,m">
<field name="NUM">8</field>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="debug" id="I!JdPvLt|C``gjndod}(">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text" id="j=!lBeNfc[4n_tyWlKOZ">
<field name="TEXT">test</field>
</shadow>
<block type="get_value" id="wg^0@UI=GLvxnYFI#{B]">
<field name="ATTR">val</field>
<field name="OID">javascript.0.WLanThermoNano.RSSI</field>
</block>
</value>
<next>
<block type="debug" id="xjb,ILHID,1FK1ZA7|i9">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text">
<field name="TEXT">test</field>
</shadow>
<block type="get_value" id="_jmVkz.hiaJ`!WwRO]8y">
<field name="ATTR">val</field>
<field name="OID">javascript.0.WLanThermoNano.SOC</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</xml>


Getriggert wird auf jede Änderung des MQTT Daten Strings.
Dann eine Liste aus dem MQTT-Daten Text Strings erstellen.
Dann die beiden neuen Datenunkte mit dem 5. bzw. 3. Feld updaten.
Die debug outputs dann entfernen, wenn alles läuft.

Hier noch ein Update meiner Vis wo nun die Grenztemperaturen für jeden Kanal einstellbar sind. Slider für die grobe Einstellung
und up/down Buttons für 1 Grad Justierung . RSSI und Batterieanzeige sind nun live Daten. Und bei Über oder Unterschreitung des
Temperaturlimits blinkt dann das entsprechende AlarmSymbol.
VisNano02.PNG

Die Tempverläufe habe ich mittels InfluxDB und Grafana in Vis eingebaut:
VisNano03.PNG
 

Anhänge

  • BlocklyNano.txt
    7.2 KB · Aufrufe: 2
  • VisNano.PNG
    VisNano.PNG
    68.8 KB · Aufrufe: 24
  • nano02.PNG
    nano02.PNG
    10.3 KB · Aufrufe: 2
Zuletzt bearbeitet:

Easyrunner

New member
Hallo an alle,
habe auch den Nano und ioBroker über den Adapter am Laufen.
Allerdings kann ich keine Werte schreiben.
D.h. wenn ich in ioBroker ind en Objekten unter Pitmaster den Set Wert verändere und bestätige, springt er kurz auf den gewünschten Werte, dann wieder zurück auf den alten.
Muss hier das Schreiben noch irgendwie enabled werden?
 

tritor

Member
@Easyrunner, ich tippe mal auf setObject in der Javascript Instanz.
Versuch mal folgendes:
Gehe zur Instant javascript.0 und klicke auf den Schraubenschüssel
Danach setze Haken bei:
- Erlaube das Kommando "setObject" und Erlaube das Kommando "exec"

2020-09-08_Javascript_setobject.png
Da ich auch erst mit ioB angefangen habe ist das leider nur ein Vermutung.
Grüße
 

Easyrunner

New member
Haken war gesetzt, aber was hat das mit Javascript zu tun?
Ich ändere doch den Wert ind en Objekten des WLAN Thermo Adapters, und das geht doch über MQTT.

Und Pitmaster steht auf auto.
Ich kann auch bei den Sensoren keine Max und Min Werte verändern.

Über die Weboberfläche das Nanos geht das.
 
Zuletzt bearbeitet:

tritor

Member
Ich dachte du hast ein Visualisierung und von dort änderst du den Wert.
Hast du mal einen Screenshot?
 

Easyrunner

New member
Hier ein Screenshot der Objekte.
Ich versuche den Pitmaster Set Wert dort zu verändern, wird aber immer wieder vom alten Wert überschrieben.
In der Visualisierung habe ich den Pitmaster noch nicht. Ich wollte das erst einmal so testen.
2020-09-08 22_33_56-Window.jpg
 

tritor

Member
Ich habe gerade gesehen, daß ich den Pitmaster Tempwert nur ändern kann nachdem ich mich mit dem admin account am Nano eingeloggt habe.

Wobei ich keine Pitmaster Version habe, also keine HW Ausgänge und die SW am Nano dürfte deswegen auch anders sein.
Das müßte aber Steffen beantworten können.

Kannst du dich mal am Nano einloggen und dann versuchen Einstellungen modus im ioB zu ändern?
2020-09-08_iob_pit.png
Dann konnte ich bei mir die "set" Temperatur im ioB ändern und sie wurde an den Nano übertragen.
Auch nach einem Restart des Nano ging es dann noch aus dem ioB Änderungen vorzunehmen.
 

Easyrunner

New member
Problem besteht noch immer. Wenn man vom Web-IF des Nanos den Pitmaster Wert verändert muss man sich ja als Admin einloggen. Auch danach kann ich über ioBroker nichts verändern.
Außerdem habe ich ja sowieso der Admin Account im Adapter hinterlegt.
 

s.ochs

BOFH
Teammitglied
Ich weiß jetzt nicht genau wo es hängt, aber denkt dran, dass Pitmasterwerte immer nur im ganzen Set geändert werden können. Also so wie das JSON-Objekt über /data reinkommt, muss es als ganzes auch wieder an die /set-Schnittstelle übergeben werden, inkl. Parameter die gar nicht verändert wurden. Dadurch wird sicher gestellt, dass ein Zustand immer vollständig ist. Man kann z. B. den Modus nicht auf "manual" stellen, ohne das auch das PID-Profil und der Pitmasterwert gesetzt werden, ansonsten wär der Pitmaster undefiniert.
 

tritor

Member
Hi Steffen,

habe bei mir mal die "nur" die Pit set Temp geändert und folgendes im log file gehabt:

von 145 Grad

2020-09-08 23:18:18.493 - [34mdebug[39m: mqtt.0 (6359) stateChange mqtt.0.WLanThermo.NANO-33dff0.status.data: {"val":"{\"system\":{\"time\":\"1599599897\",\"unit\":\"C\",\"soc\":78,\"charge\":false,\"rssi\":-63,\"online\":0},\"channel\":[{\"number\":1,\"name\":\"Kanal 1\",\"typ\":0,\"temp\":999.00,\"min\":24.00,\"max\":26.00,\"alarm\":0,\"color\":\"#0C4C88\"},{\"number\":2,\"name\":\"Kanal 2\",\"typ\":0,\"temp\":999.00,\"min\":25.00,\"max\":45.00,\"alarm\":0,\"color\":\"#22B14C\"},{\"number\":3,\"name\":\"Kanal 3\",\"typ\":0,\"temp\":999.00,\"min\":20.00,\"max\":52.00,\"alarm\":0,\"color\":\"#EF562D\"},{\"number\":4,\"name\":\"Kanal 4\",\"typ\":0,\"temp\":999.00,\"min\":20.00,\"max\":120.00,\"alarm\":0,\"color\":\"#FFC100\"},{\"number\":5,\"name\":\"Kanal 5\",\"typ\":0,\"temp\":999.00,\"min\":10.00,\"max\":185.00,\"alarm\":0,\"color\":\"#A349A4\"},{\"number\":6,\"name\":\"Kanal 6\",\"typ\":0,\"temp\":999.00,\"min\":20.00,\"max\":150.00,\"alarm\":0,\"color\":\"#804000\"},{\"number\":7,\"name\":\"Kanal 7\",\"typ\":0,\"temp\":999.00,\"min\":13.00,\"max\":27.00,\"alarm\":0,\"color\":\"#5587A2\"},{\"number\":8,\"name\":\"Kanal 8\",\"typ\":0,\"temp\":999.00,\"min\":15.00,\"max\":90.00,\"alarm\":0,\"color\":\"#5C7148\"}],\"pitmaster\":{\"type\":[\"off\"],\"pm\":[{\"id\":0,\"channel\":1,\"pid\":1,\"value\":10,\"set\":145.00,\"typ\":\"manual\",\"set_color\":\"#ff0000\",\"value_color\":\"#000000\"}]}}","ack":true,"ts":1599599898491,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1599599898491}

auf 150 Grad

2020-09-08 23:48:48.507 - [34mdebug[39m: mqtt.0 (6359) stateChange mqtt.0.WLanThermo.NANO-33dff0.status.data: {"val":"{\"system\":{\"time\":\"1599601727\",\"unit\":\"C\",\"soc\":75,\"charge\":false,\"rssi\":-59,\"online\":0},\"channel\":[{\"number\":1,\"name\":\"Kanal 1\",\"typ\":0,\"temp\":999.00,\"min\":24.00,\"max\":26.00,\"alarm\":0,\"color\":\"#0C4C88\"},{\"number\":2,\"name\":\"Kanal 2\",\"typ\":0,\"temp\":999.00,\"min\":25.00,\"max\":45.00,\"alarm\":0,\"color\":\"#22B14C\"},{\"number\":3,\"name\":\"Kanal 3\",\"typ\":0,\"temp\":999.00,\"min\":20.00,\"max\":52.00,\"alarm\":0,\"color\":\"#EF562D\"},{\"number\":4,\"name\":\"Kanal 4\",\"typ\":0,\"temp\":999.00,\"min\":20.00,\"max\":120.00,\"alarm\":0,\"color\":\"#FFC100\"},{\"number\":5,\"name\":\"Kanal 5\",\"typ\":0,\"temp\":999.00,\"min\":10.00,\"max\":185.00,\"alarm\":0,\"color\":\"#A349A4\"},{\"number\":6,\"name\":\"Kanal 6\",\"typ\":0,\"temp\":999.00,\"min\":20.00,\"max\":150.00,\"alarm\":0,\"color\":\"#804000\"},{\"number\":7,\"name\":\"Kanal 7\",\"typ\":0,\"temp\":999.00,\"min\":13.00,\"max\":27.00,\"alarm\":0,\"color\":\"#5587A2\"},{\"number\":8,\"name\":\"Kanal 8\",\"typ\":0,\"temp\":999.00,\"min\":15.00,\"max\":90.00,\"alarm\":0,\"color\":\"#5C7148\"}],\"pitmaster\":{\"type\":[\"off\"],\"pm\":[{\"id\":0,\"channel\":1,\"pid\":1,\"value\":0,\"set\":150.00,\"typ\":\"manual\",\"set_color\":\"#ff0000\",\"value_color\":\"#000000\"}]}}","ack":true,"ts":1599601728505,"q":0,"from":"system.adapter.mqtt.0","user":"system.user.admin","lc":1599601728505}

Scheint also, daß bei jeder Änderung eine MQTT message erstellt un dübertragen wird welche die kompletten Daten aus dem ioB an den Nano sendet.
 

tritor

Member
@Easyrunner
ich habe mal im ioB Forum gesucht aber leider auch nichts gefunden.
Welchen MQTT server benutzt du? Einen seperaten oder den MQTT Adapter im ioB?
Kannst mal die Settings des MQTT vom ioB posten?
 

Easyrunner

New member
@tritor Wie hast du denn die Werte verändert? Hast du auch MQTT Adapter und WLANThermo Adapter installiert?

Die Frage ist wodurch die Daten überhaupt übertragen werden.
Über den ioBroker MQTT Adapter oder den ioBroker WLANThermo Adapter.
Es werden übrigens in den Datenpunkten MQTT Daten von Nano abgelegt, Hier gibt es den Ordner Status, darin "data" mit einer JSON Tabelle und "settings" ebenfalls mit einer JSON Tabelle.
Dann trägt der WLANThermo Adapter auch eine Menge Datenpunkte ein, wo ich halt versuche den Wert zu verändern.
MQTT läuft in ioBroker als Adapter , dort die Einstellung Server/Broker mit Port 1883.

Sitze leider nicht am Rechner und kann keinen Screenshot machen.

Übrigend hatte @Mattenausohz mal das gleiche Problem gehabt. Porst #35. Da hatte niemand drauf reagiert.
Was ist denn daraus geworden?
 

tritor

Member
Mein setup:
Intel NUC mit Proxmox. 1 x VM mit ioB, 1 x LinuxContainer mit InfluxDB und Grafana, 1 x LinuxContainer mit MQTT server.
Daher verwende ich einen "externen MQTT server" und den MQTT Adapter in ioB nur im Client mode.
Im Nano habe ich den externen MQTT broker eingetragen.

Wenn ich am Abend zu Hause bin, kann ich mal meine MQTT Adapter Einstellungen posten.
Aber so wie ich es oben an Steffen geschrieben habe, sobald ich einen Wert im WLANThermo Adapter ändere wird lt. log eine MQTT Message abgesetzt und die kompletten Daten an meinen MQTT broker gesendet, der wiederum sendet die Daten dann an den Nano.

Ich schaue mir dann auch mal die Messages an die mein externer MQTT broker and den Nano sendet.
 

tritor

Member
Also im Nano habe ich meinen MQTT broker eingegeben:
2020-09-09_21-44Nanomqttsettingd.png
im ioBroker den MQTT Adapter konfiguriert:
2020-09-09_21-47iobmqttsettings.png
2020-09-09_21-47iobmqttsettings2.png
Wenn ich nun den Wert für die Pitmastersettings, also die Temp im ioB WLanThermoAdapter ändere z.B. von 150 auf 90, dann wird das vom WLANThermoAdapter and den MQTTBroker gesendet und danach vom MQTTBroker auf den Nano.
Hier die MQTT-Message der Änderung die ich mit dem MQTT Explorer mitgelesen habe.
2020-09-09_21-55mqttmessage.png
@Easyrunner, eventuell hilft das bei deinen MQTT-Settings. Für mein Setup hatte ich lange mit den Einstellungen gekämpft bis ich es grundsätzlich hinbekommen habe.
 

Anhänge

  • 2020-09-09_21-44Nanomqttsettingd.png
    2020-09-09_21-44Nanomqttsettingd.png
    80.4 KB · Aufrufe: 1
  • 2020-09-09_21-47iobmqttsettings.png
    2020-09-09_21-47iobmqttsettings.png
    36 KB · Aufrufe: 1

tritor

Member
@Steffen, da ja 2 User den issue mit dem Schreiben auf den Nano über den Adapter haben, könnte Dutchman mal draufsehen?
 
Oben Unten