Hallo zusammen
ich bekomme von meiner Heizung über MQTT den status meiner Heizkreispumpe als string "on" und "off" übermittelt wie kann ich das am besten in einer Zeitserie tracken? Wahrscheinlich muss ich es erst in einer Logik umwandel in 0 und 1 oder geht das evtl auch noch einfacher?
Danke für eure Vorschläge
Re: String ("on", "off") in Zeitserie
Verfasst: Di Nov 16, 2021 7:07 am
von eib-eg
Im MQTT Video wird es zwar nicht direkt gezeigt bei 23:45
sieht man aber das man die zeitserien als Ziel auswählen kann
Re: String ("on", "off") in Zeitserie
Verfasst: Di Nov 16, 2021 7:55 am
von Robosoc
Ich habe noch nie mit Strings im TWS gearbeitet...hat dann diese Zeitserie als Wert die Strings "on" und "off"? Im Plugin Discrete (sehr zu empfehlen für die Anzeige von Zuständen) kann man das dann eventuell auf Farben matchen, aber auch da bin ich mir nicht sicher ob das Plugin mit Strings umgehen kann.
Ein Logik-Modul mit String-Eingang ist mir ausser dem Modul Multiplexer(string), das hier aber nicht hilft, nicht bekannt. Auch gibt es glaube ich noch keine Konvertierungsfunktion die Strings am Eingang zu Werten mappt. Eventuell geht es über den mu-parser...dann könnten wir uns dafür etwas in einer Custom-Logik bauen...?
Re: String ("on", "off") in Zeitserie
Verfasst: Di Nov 16, 2021 8:58 am
von Robosoc
Habe es mit einem abgewandelten Logik-Modul "Freie Formel" als Custom-Logik probiert und dachte erst es würde klappen, aber am Ende war es doch nicht erfolgreich. Falls jemand noch einen Gedankenfehler in meinem Ansatz findet, hier der Code:
/**
String-Vergleich
Wenn Text (String) = Vergleichstext (String) dann Ausgang TRUE, sonst FALSE
###################################################################################
# Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL #
# ("Timberwolf Open Logic Block License"), die unter https://wrgt.news/TOLL #
# zum Download zur Verfügung steht. #
####################################################################################
*/
{
"Level": [
["$Formula","string","X1==X2?1:0"],
["$Out","integer",0],
["$Text","string",""],
["$Vergleichstext","string","on"],
["$Error?","bool",false],
["$VAR<Inhibit?>","bool",false]
],
"Module": [
["Break",["$VAR<Inhibit?>"]],
["CalcFormula",["$Text", "$Vergleichstext"],"$Out","$Formula"]
],
"Input": [
["Text","Ein String, der sich ändert","$Text","c"],
["Vergleichstext","Ein fixer Text, der z.B. als Parameter vorgegeben wird und auf den verglichen werden soll ","$Vergleichstext","c"],
["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
],
"Output": [
["Ergebnis","TRUE, wenn beide String-Eingänge gleich sind, sonst false ","$Out","a"],
["Fehler","Wird aktiv wenn ein Berechnungsfehler aufgetreten ist.","$Error?","ce"]
]
}
Re: String ("on", "off") in Zeitserie
Verfasst: Di Nov 16, 2021 3:42 pm
von ms20de
Hallo Micha,
du solltest bei der MQTT-Transaktion den Typ der eingehenden Daten einfach auf Boolean stellen können. Der eingehende Text "on" und "off" wird dann automatisch zu Wahr und Falsch gewandelt und als Boolean im Timberwolf Objektsystem weitergesendet, was dann als 1 und 0 in der Zeitserie ankommen sollte.
Viele Grüße,
Matthias
Re: String ("on", "off") in Zeitserie
Verfasst: Di Nov 16, 2021 7:53 pm
von Mibr85
eib-eg hat geschrieben: ↑Di Nov 16, 2021 7:07 am
Im MQTT Video wird es zwar nicht direkt gezeigt bei 23:45
sieht man aber das man die zeitserien als Ziel auswählen kann
wie ich aus einem MQTT Wert eimne Zeitserie mache ist mir klar aber leider kann man aus den Werten "on" und "off" keine Zeitserie generieren...
@ Matthias
Mit Boolean hatte ich es zu erste versucht aber leider ohne Ergfolg
Edit:
Hab es noch mal mit Boolean probiert jetzt klappt es, ich werde es mal beobachten
Danke euch
Re: String ("on", "off") in Zeitserie
Verfasst: Di Nov 16, 2021 11:54 pm
von Robosoc
ms20de hat geschrieben: ↑Di Nov 16, 2021 3:42 pm
einfach auf Boolean stellen können. Der eingehende Text "on" und "off" wird dann automatisch zu Wahr und Falsch gewandelt
Gibt es noch andere solche Autokonvertierungsmappings von string zu boolean?
Z.B.
An/Aus
Ein/Aus
Up/Down
Open/Closed...
Day/night
Auf/Ab
usw.?
Re: String ("on", "off") in Zeitserie
Verfasst: Mi Nov 17, 2021 5:59 am
von blaubaerli
Hallo Sven,
irgendwo gab es dazu was. Ich meine mich zu erinnern, dass da in Stefans Film zu MQTT eine Auflistung eingeblendet wurde.
Das „open/closed“ kam aber erst später dazu.
Schau da einfach noch mal rein.
Beste Grüße
Jens
Re: String ("on", "off") in Zeitserie
Verfasst: Mi Nov 17, 2021 6:32 am
von blaubaerli
Ich habe in meiner Screenshotsammlung dazu doch tatsächlich was gefunden:
Und dazu gekommen ist "open/close" für die Shelly-Fenster/Türkontakte. Ob "closed" auch konvertiert wird habe ich nicht verifiziert.
Beste Grüße
Jens
Re: String ("on", "off") in Zeitserie
Verfasst: Mi Nov 17, 2021 8:06 am
von Robosoc
Danke Jens, sehr interessant. Auch wenn ich keinen konkreten Anwendungsfall habe.
Aber wir schreiben ja aktuell ein wenig an der Logik-Doku und haben da einen Abschnitt zum Thema Autokonvertierung. Da würde ich das gleich mal aufnehmen...auch wenn das am Logik-Zellen Ein- und Ausgang nicht so entscheidend ist wie beim direkten Einlesen von z.B. MQTT-Daten.
Sie wie es auf den Screenshots dargestellt ist, würde ich davon ausgehen, dass die Konvertiereung vollständig Case-Sensitiv ist und "On" (nicht ON und nicht on) somit als FALSE erkannt werden würde.