@beowolf Jap, du nimmst ein Gerät Knopf:
Und stellst ganz unten unter "Gerätespezifische Optionen" die Zeit ein wie lange der Tastimpuls gehalten wird:
@beowolf Jap, du nimmst ein Gerät Knopf:
Und stellst ganz unten unter "Gerätespezifische Optionen" die Zeit ein wie lange der Tastimpuls gehalten wird:
@wal Der müssste brandaktuell sein, am Wochende erst ein Backup der SD-Karte gezogen anschließend alles geupdatet was mir vorgeschlagen wurde und anschließend wieder ein SD-Karten Backup angefertigt.
@wal Moin zusammen.
Ich habe jetzt die letzten zwei Tage insgesamt fünf Variablen auf SPS Seite auf Ausreißer überprüft und wenn einer Aufgetreten wäre einen Zähler hochgezählt. Was soll ich sagen, der Zähler ist auch nach zwei Tagen immer noch 0 - es ist also aus meiner Sicht davon auszugehen, dass es zu keinen Ausreißern mehr kommt
Um ganz sicher zu gehen dass ich nicht irgendeinen Denkfehler bei dem Testaufbau drin hab hier meine Vorgehensweise:
PS: Bei AmbientTemperature nicht wundern, da sich der betreffende Akku im Gartenhaus befindet ist er mit einer Heizmatte versehen und der Temperaturfühler der eigentlich die Raumtemperatur im Gartenhaus misst wird aktuell dazu mißbraucht die Heizmatte zu messen. die 30°C sind also plausibel
@mickym Ich danke dir vielmals für die tatkräftige Unterstützung!!
@mickym Ich hab keine Ahnung wie ich ihn provozieren könnte.... aktuell wird er im Log nicht mehr abgelegt.
Aber eines würde ich noch interessieren, sofern ich dir damit nicht auf den Keks gehe...
Du bist ja ziemlich firm beim MQTT Adapter. Kannst du mir eventuell erklären warum er bei meiner Tasmota-Steckdose den Typ des command innerhalb des Objektbaums unter immer wieder von selbst auf "Number" umstellt obwohl Tasmota dort definitiv einen String erwartet?
{
"_id": "mqtt.0.tasmota.Kueche_Unterschrank_Licht.cmnd.POWER",
"common": {
"name": "tasmota/Kueche_Unterschrank_Licht/cmnd/POWER",
"write": true,
"read": true,
"role": "variable",
"desc": "mqtt server variable",
"type": "number" // hier sollte eigentlich 'string' stehen?! Er ändert es aber immer wieder selbstständig auf 'number'
},
"native": {
"topic": "tasmota/Kueche_Unterschrank_Licht/cmnd/POWER"
},
"type": "state",
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
},
"from": "system.adapter.admin.0",
"user": "system.user.admin",
"ts": 1734084459909
}
@mickym sagte in Shelly addon über Node Red auf einer NAS mit iobroker:
Und dann schau lieber in deinem iqontrol ob Du da auch Booleans und keine Zeichenketten "true" und "false" schickst.
Bei einem Schalter kann ich nach meiner Kenntnis nicht beeinflussen was er beim Betätigen schickt. Ich kann nur bei einem "Knopf" die zu schickenden Werte für ACTIVE oder INACTIVE beeinflussen - verwendet wird aber seit deiner Empfehlung der Schalter.
Im common Objekt habe ich die Zeile "def": "", entfernt.
@mickym sagte in Shelly addon über Node Red auf einer NAS mit iobroker:
Am Besten den Schalter nochmal neu definieren - der steht glaub standardmäßig auf true/false.
Am Schalter habe ich nichts verändert. Ich denke wie ich mich ausgedrückt habe führte zu Irritationen bezüglich "on" / "off" und true und false. Wie gesagt, am Schalter oder seinen Eigenschaften habe ich nichts verändert. Wenn ich "on" oder "off" erwähnt habe war das immer auf den Ausgangswert/Schreibwert des Alias bezogen, also mit Hilfe der Konvertierung.
@mickym sagte in Shelly addon über Node Red auf einer NAS mit iobroker:
Dein Alias ist doch ein Boolean - also Logikwert und keine Zeichenkette. In dem Alias wird doch alles von und nach true/false konvertiert. Das dürfte das Hauptproblem sein.
Okay, ich hab den Alias von Zeichenkette auf Boolean geändert, alle Haken beim MQTT Adapter raus genommen und das Schalten über Iqontrol - Widget klappt wieder. Jedoch meldet der Admin Adapter jetzt eine Warnung:
2024-12-13 18:05:18.190 - warn: admin.0 (184712) Object alias.0.SmartHome.Esszimer.Licht.Haupt is invalid: Default value has to be type "boolean" but received type "string" This will throw an error up from js-controller version 7.0.0!
Die kann ich in soweit auch nachvollziehen als das zwar die zu schreibenden Werte von Boolean auf "on" : "off" zu konvertieren sind, jedoch die Lesewerte aus einer Zeichenkette:
{"id":0, "source":"mqtt", "output":false, "apower":0.0, "voltage":231.7, "freq":49.9, "current":0.000, "aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1734110100}, "ret_aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1734110100},"temperature":{"tC":56.7, "tF":134.0}}
stammen. Oder kann man dort noch eine weitere Konvertierung innerhalb des Alias definieren? Das sieht für mich so aus als wenn es in diesem Fall nicht möglich ist nur einen Alias zum Lesen und Schreiben zu verwenden, richtig? Also eher zwei Aliase, da der Shelly command und status in unterschiedlichen Typen liefert? Bzw. der Alias lesend einen anderen Typen verwenden muss als schreibend?
@mickym Danke dir für die Links
Aber, so langsam geh ich am Stock. Jetzt funzt es schon wieder nicht mehr und mir gehen die Ideen aus was sich da ständig ändert dass es plötzlich nicht mehr funktioniert.
Seit ca. zwei Stunden tut sich nichts mehr wenn der Schalter in Iqontrol betätigt wird. Kann es eventuell an den Einstellungen im MQTT Adapter liegen?
Der MQTT Adapter steht auf grün und verursacht keine warnenden Logeinträge. Die derzeit verbundenen MQTT Geräte werden auch alle aufgelistet:
Aber wenn ich den Schalter betätige tut sich nichts, nur der drehende Kreis ist zu sehen:
Die Konvertierungsfunktionen sind nach wie vor so, wie sie heute Morgen noch einwandfrei funktioniert haben:
Hier die Ansicht aus dem MQTT Adapter-Baum, die Werte sind offensichtlich auch nicht bestätigt (rot):
Aber offensichtlich werden aus Iqontrol, also dem definierten Schalter, weder "ON" noch "OFF" herausgeschickt und ich kann mir einfach nicht mehr erklären warum dies nicht geschieht
Des kann doch nicht so schwer sein ein simples Relais per MQTT ein- und aus zu schalten - mit dem Tasmota-Dingen gehts ja auch... langsam macht sich Verzweifelung breit.
@mickym Erstmal vielen Dank für deine schnelle Unterstützung . Jetz läuft es wie gewünscht. Ich hatte zwischenzeitlich mal den Shelly-Adapter ausprobiert allerdings gefiel es mir nicht, dass dort die Client ID nicht geändert werden darf und man beim Einsatz von zig Shellys dann m.E. kaum eine Klartextzuordnung, welcher Shelly was macht, erhält. Daher bin ich wieder zurück zu deiner, wirklich guten, Lösung über den MQTT-Adapter da dort eben die Zuordnung und Strukturierung über das MQTT prefix sauber möglich ist.
Allerdings, es funktioniert mit den Konvertierungsfunktionen wie folgt:
In Iqontrol ist das Widget auf "Schalter" eingestellt.
PS: In welcher Doku kann man nachlesen wie die Konvertierungsfunktionen anzuwenden sind? Man muss ja quasi erst mal wissen dass es mit derartigen Konvertierungen zu lösen geht
@mickym sagte
Sprich bei Lesen nimmst Du
JSON.parse(val).output
Nun, genauso hatte ich es in meinem ersten Post ja geschrieben und der Status des Relais wird ja auch zuverlässig in Iqontrol angezeigt. Nur das Schreiben in den command klappt genau einmal und dann passiert bei erneutem Betätigen des Widgets nix mehr.
Ich weiß nicht ob ich mich unglücklich ausdrücke oder wir einfach aneinander vorbei reden.
Das "on" oder "off" gesendet werden sollen hab ja nicht ich mir ausgedacht, das scheint ja der command zu erwarten.
Der Knopf in Iqontrol sieht so aus:
Und ganz unten in den gerätespezifischen Optionen ist aktuell eine 0 eingetragen damit der Knopf schaltet und nicht toggelt:
Würde ich anstelle der 0 z.B. 1000 eintragen, dann würde beim Betätigen des Widgets das Relais anziehen und nach genau 1sec wieder abfallen. Das suggeriert mir, die grundsätzliche Ansteuerung scheint zu klappen. Nur nicht dann wenn der Knopf schalten statt toggeln soll....
Schreibe ich z.B. direkt über Iobroker hier ein "on" oder "off" rein kann ich den Shelly schalten:
@mickym Danke für deine schnelle Antwort. Ich habe anscheinend noch so gar nicht geblickt wie das Ganze von Statten geht, würde es aber gern blicken.
Der Wert der mqtt Variablen mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0 ist doch ein JSON oder nicht? Um an den Wert von "output", also den Status des Relais, zu kommen muss der Wert von mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0 doch geparst werden oder? Deswegen das JSON.parse(val).output - was in Iqontrol ja auch zuverlässig den aktuellen Status des Relais angezeigt hat.
Inhalt von mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0:
{"id":0, "source":"WS_in", "output":false, "apower":0.0, "voltage":234.8, "freq":49.9, "current":0.000, "aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1734013740}, "ret_aenergy":{"total":0.000,"by_minute":[0.000,0.000,0.000],"minute_ts":1734013740},"temperature":{"tC":56.0, "tF":132.7}}
"output" muss hier doch extrahiert werden und kann nicht einfach als "on" oder "off" ausgelesen werden.... ich blick das nicht.
Hallo zusammen,
das Thema ist zwar schon etwas älter, aber aus aktuellem Anlass hole ich den Faden noch mal hoch und hoffe das mein Anliegen hier richtig ist ohne ein neues Thema dazu zu eröffnen.
Ich möchte einen Shelly Mini1PMG3 über den Iobroker bzw. Iqontrol ein- und ausschalten. Mit einem Nous A1 über Tasmota funktioniert das auch soweit, aber am Shelly beiße ich mir gerade die Zähne aus. Das Thema hier hab ich aufmerksam und mehrfach gelesen aber irgendwo hakt es bei mir immer noch.
Es wird der mqtt Adapter verwendet und ich habe die Einstellungen für Topic usw. aus der Empfehlung hier aus dem Faden übernommen:
In Iqontrol habe ich (wie für den Tasmota Nous A1 auch) einen Knopf angelegt der auf einen DP alias.0.SmartHome.Esszimer.Licht.Haupt zugreift. Unter SET_VALUE ist als Konstante "on" und OFF_SET_VALUE "off" (ohne Anführungszeichen) eingetragen.
Der Alias sieht so aus:
{
"type": "state",
"common": {
"name": "Haupt",
"role": "state",
"type": "string",
"read": true,
"write": true,
"alias": {
"id": {
"read": "mqtt.0.shellys.Esszimmer_Licht_Haupt.status.switch:0",
"write": "mqtt.0.shellys.Esszimmer_Licht_Haupt.command.switch:0"
},
"read": "JSON.parse(val).output"
}
},
"_id": "alias.0.SmartHome.Esszimer.Licht.Haupt",
"native": {},
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
},
"from": "system.adapter.admin.0",
"user": "system.user.admin",
"ts": 1733998910262
}
Der Baum unter Alias ist wie folgt aufgebaut:
Unter dem mqtt Adapter sieht es so aus:
{
"_id": "mqtt.0.shellys.Esszimmer_Licht_Haupt.command.switch:0",
"common": {
"name": "shellys/Esszimmer_Licht_Haupt/command/switch:0",
"write": true,
"read": true,
"role": "variable",
"desc": "mqtt server variable",
"type": "string"
},
"native": {
"topic": "shellys/Esszimmer_Licht_Haupt/command/switch:0"
},
"type": "state",
"acl": {
"object": 1636,
"state": 1636,
"owner": "system.user.admin",
"ownerGroup": "system.group.administrator"
},
"from": "system.adapter.admin.0",
"user": "system.user.admin",
"ts": 1733948893920
}
Mit setzen von "on" oder "off" direkt im mqtt Adapter kann ich den Shelly ein- und ausschalten.
Das Verhalten des Shellys treibt mich noch in den Wahnsinn. Wenn ich in Iqontrol in den Einstellungen des Knopfes unter "Gerätespezifische Optionen" die Rückstellzeit auf z.B. 1000ms stelle und dann in der Weboberfläche den Knopf drücke schaltet sich der Shelly ein und wie erwartet nach 1s wieder aus. Da er aber nicht als Impulsgeber fungieren soll sondern als Schalter, soll ja statt den 1000ms dort eine 0 stehen (0=nie, umschalten). Steht dort jedoch eine 0, dann kann ich genau einmal einschalten und danach wird jegliches bedienen des Knopfes ignoriert.
Trage ich nichts ein, also weder 1000ms noch eine 0 dann fungiert der Knopf als Taster und sein "Ausgangssignal" toggelt sofort mit Betätigen und wieder loslassen. Der Shelly reagiert auch hier richtig. Knopf betätigt >> Shelly = true, Knopf losgelassen >> Shelly = false.
Was kann ich hier bloß übersehen haben?
@beowolf Jap, du nimmst ein Gerät Knopf:
Und stellst ganz unten unter "Gerätespezifische Optionen" die Zeit ein wie lange der Tastimpuls gehalten wird: