NEWS
Geräte per Datenpunkt schalten
-
Guten Morgen,
im Payload der Alexa Nachrichten kommt ja der Helligkeitswert mit. Diesen solltest du eigentlich gut für die Rollos nutzen können.
Damit das gut funktioniert sollten deine Rollos jedoch kalibriert worden sein. Welche Rollos bzw. welches System nutzt du?
Ich selber habe als Rollo-Steuerung Shelly und ZWave im Einsatz. Damit funktioniert das gut.Payload vom Alexa Befehl:
{ on: false, bri: 254, command: "switch", bri_normalized: 100 }
Aus meiner Sicht gibt es zwei einfache Varianten:
- Nur geeignet zum kompletten hoch- bzw. runterfahren
Das on:false/true auf einen Number Wert mappen.
Die Funktion sollte dann etwa so aussehen:
if (msg.payload.on === true) { msg.payload = 0; } else { msg.payload = 99; } return msg;
Du kannst dann z.B. per Alexa-Befehl: Schalte "Rollo-Name" ein/aus das Rollo hoch oder runter fahren.
Variante 2)
Funktion anpassen:msg.payload = msg.payload.bri_normalized return msg;
Dies gibt den Prozentwert von 0-100 weiter. Somit kannst du Alexa z.B. sagen: Alexa schalte "Rollo-Name" auf 50%.
Ist zwar nicht ganz die schönste Variante aber funktioniert zuverlässig
- Nur geeignet zum kompletten hoch- bzw. runterfahren
-
@Chris_78
Hallo, ich verwende bei einem Rollladen einen Shelly und bei den anderen beiden Rollladen noch die Schalter aus der Vorgängerzeit HomeMatic. Die habe ich alle mit den Prozentbefehl gesteuert.
lg Oskar -
@Chris_78, jetzt habe ich plötzlich das Problem, daß der Node Red Adapter sich nicht mehr starten läßt, hattest du das auch schon mal und was kann man dagegen tun?
-
@Oskar
Hatte ich bisher keine Probleme mit. Was sagt denn die Logausgabe?
Evtl. mal den LogLevel hochsetzen: -
@Chris_78
dies ist ein Ausschnitt der Meldung die ich bekomme
Ich kann damit leider nichts anfangen, lg -
Geh mal bitte in die Adapter-Einstellungen von Node-Red und ändere folgende Einstellung:
Bei dir müsste noch 0.0.0.0 Listen on all IPs drin stehen.
-
@Chris_78
Hallo, ich habe jetzt alle die ich habe versucht aber es hat nichts geholfen, Zwischenzeitlich hatte ich auch den Node Red Adapter deinstalliert und dann wieder installiert aber alles ohne Erfolg, -
Was hast du denn als letztes gemacht bevor es nicht mehr ging? Ich habe gehört, dass es schon mal Probleme
geben soll wenn man den Alexa Controller zwei mal in den Flows benutzt.Hattest du den Rechner schon mal neu gestartet?
Falls alles nichts hilft, den NodeRed Adapter deinstallieren und danach prüfen ob im NodeRed Verzeichnis noch
Daten übrig sind:Per Putty/SSH verbinden:
cd /opt/iobroker/iobroker-data/node-red/
sudo rm -r ./*
(Vorsichtig sein der Befehl löscht alles im aktuellen Verzeichnis inkl. aller Unterverzeichnisse. Also wirklich nur ausführen wenn du im
richtigen Verzeichnis bist.)Bevor du aber alles löscht könntest du dir die "Flow-Konfiguration" anschauen. Alle Elemente/Flows werden in der Datei flows.json
gespeichert.
Per Putty:
cd /opt/iobroker/iobroker-data/node-red/
nano flows.jsonEvtl. hilft es ja nur einzelne Elemente zu löschen oder zu deaktivieren.
-
@Chris_78 Hallo, danke für die Nachricht, bin heute nicht dazu gekommen deine Schritte aus zu probieren, bin gerade dabei von meiner Karte eine Kopie zu erstellen und es dann erst probieren.
Ich melde mich auf jeden Fall die nächsten Tage wieder, lg Oskar -
@Chris_78
Hallo, jetzt komme ich nochmals auf mein Problem zurück, mich hat das so genervt dann habe ich alles neu installiert, von IoBroker angefangen alle Adapter neu und es läuft nun auch Node Red richtig.
Die Lampen habe ich jetzt alle wieder eingerichtet und ich kann Sie über Alexa steuern. Wo ich noch deine Hilfe benötige ist bei den Rollladen, die gehen auch allerdings nur komplett auf oder komplett zu, das mit den Prozenten habe ich noch nicht ganz heraus.
Dies sind die Datenpunkte die ich habe
LG Oskar
-
@Chris_78
Hallo Chris, nachdem ich meine Nachricht nochmals gelesen habe, ich hatte nicht deine Hilfe gemeint mit dem genervt. Ich meinte damit meine eigene IoBroker Installation.
Ich war und bin mit deiner Hilfe sehr zufrieden und würde dich bitte mir noch etwas weiter zu helfen,
LG Oskar -
Hallo,
sorry ich habe deine Nachricht nicht negativ aufgefasst. War nur Beruflich etwas eingespannt...Hast du das ganze denn schon mal mit dem Shelly probiert? Damit sollte es gut laufen.
Wichtig ist generell nur, dass die Kalibirierung einmal erfolgreich durchgeführt wird, ohne
funktionieren die exakte Positionsangabe nicht (sollte auch für die HM-Rollos so sein).Mit HM kenne ich mich ak´llerdings leider nicht wirklich aus. Habe ich selber nicht im Einsatz. Von den obigen
Datenpunkte sieht mir am ehesten der "Level" Datenpunkt nach dem richtigen aus.Schau mal in den Datenpunkteneigenschaften welche "Range" der Datenpunkt "Level" unterstützt:
Kategorie: "RAW (Nur für Experten)" oder evtl. auch im TAB Allgemein sichtbar
Welche Daten sind bei dir angegeben? Am besten mal einen Screenshot vom RAW-Tab zeigen.
Evtl. macht auch der Code vom Funktionsblock Probleme. Mir ist aufgefallen, dass in der ersten Zeile am Ende ein Semikolon fehlt.
Ist beim letzten mal leider durchgerutscht.
Richtiger Code sollte sein:
msg.payload = msg.payload.bri_normalized;
return msg;Evtl. ist auch ein String to Number Konvertierung notwendig. Kannst du am Ausgang vom Funktionsblock einen Debug-Node dranhängen und
zeigen was genau herauskommt (rechte Seite auf Debugnachrichten)?
Wir kriegen die Rollos per Alexa schon ans laufen -
@Chris_78
Hallo, ich hab mal ein Bild beigelegt von dem RAW
sonst hatte ich noch keinen erfolg, mit shelly und auch HM noch nicht mit diesem Eintrag
msg.payload = msg.payload.bri_normalized;
return msg;
lg Oskar -
@Chris_78
noch eine Frage, welchen Datenpunkt verwendest du beim Shelly?
lg Oskar -
Hallo,
das ist komisch, bei mir funktioniert es in dieser Konstellation einwandfrei. Kannst du bitte diesen Aufbau mal nachstellen
und die Debugausgaben posten?Ich habe das ganze gerade noch mal nachgestellt. Ich habe folgende Debugausgaben (Befehl: Alexa schalte Test auf 0 Prozent):
Für den Shelly benutze ich den Datenpunkt "pos":
Ich spreche die Shellies allerdings direkt über MQTT an und nicht über den Shelly-Adapter.
Die Kalibrierung müsste aber auch über die Weboberfläche funktionieren:
Ich habe gerade in einem anderem Forum-Eintrag folgendes Bild gefunden. Das müsste der für dich relevante Datenpunkt sein:
Was noch wichtig ist, dass du folgende Einstellung in NodeRed für den IOBroker Datenpunkt nutzt (In NodeRed Doppelklick
auf den IOBroker Node):
Bei Type muss unbedingt "command" drin stehen.
-
@Chris_78 Hallo und Danke!!!!!!!!! wir haben es geschaft, mit diesen Einstellungen
und
Nochmals recht herzlichen Dank für die viele Hilfe
lg Oskar -
@Chris_78
Hallo, jetzt habe ich doch noch eine Frage, wäre es möglich über einen Befehl die Prozente gleich mitzuteilen. Das meine ich so Alexe ich möchte Fernseh schauen und der Rollladen geht dann auf 60 %und noch eine ganz andere Frage, vor der Umstellung hatte ich den Shelly mit dem Sonoff Schalter geschaltet und beim erneuten drücken ist der Rollladen stehen geblieben, dies geht seit der Umstellung nicht mehr,
lg Oskar
-
@Oskar
Freut mich das es jetzt funktioniertZum Thema Sonoff-Schalter:
Die IF-Abfrage sieht mir fehlerhaft aus.
Deine Abfrage: IF "Wert von Objekt: Close == "Close"
Bedeutet du fragst ob der Inhalt vom Datenpunkt "Close" ist. Der Datenpunkt sieht
mir aber nach einem Boolean aus. Dürfte also nur true/false (wahr/falsch) sein.Die bessere Variante sollte sein den Datenpunkt "state" abzufragen. Dieser sollte sich ändern während
das Rollo hoch oder runter fährt.z.B.
IF "Wert von Objekt: state == "Stop"
Rollo runterfahren
else
Rollo stoppenIch nutze selber nur Javascript, falls du aber noch Probleme hast, kann ich versuchen dir ein Blockly zusammen zu bauen.
Zum Thema Prozente direkt mitteilen:
Wenn ich dich richtig verstehe möchtest du über Alexa eine Art Szene schalten.
z.B. "Alexa schalte Fernseh Szene ein" -> Fernseh schaltet ein und Rollo geht auf 60 Prozent.Sollte so ähnlich über Node Red funktionieren:
Szene Fernseh: So benennen wie du möchtest
Funktion "TV an":if (msg.payload.on === true) { msg.payload = true; } else if (msg.payload.on === false) { msg.payload = false; } return msg;
Den Licht-Schalter in meinem Beispiel natürlich durch eine schaltbare Steckdose für deinen TV ersetzen.
Funktion "Rollo schalten":
if (msg.payload.on === true) { msg.payload = 60; } else { msg.payload = 0; } return msg;
Im obigen Beispiel würde bei dem Befehl: "Alexa schalte Szene Fernseh ein":
TV wird eingeschaltet
Rollo fährt auf 60 %Bei dem Befehl: "Alexa schalte Szene Fernseh aus":
TV wird ausgeschaltet
Rollo fährt auf 0%Ich hoffe, so meintest du es ungefähr und ich habe dich richtig verstanden
-
@Chris_78
Hallo, ja das hast du richtig verstanden, wie oben beschrieben habe ich mir dies vorgestellt, jedoch mit dem Payload geht es bei mir nicht.Was den Schalter anbelangt habe ich die Datenpunkte beigelegt, es wäre schön von dir, wenn du mir das Blockly erstellen würdest, abgestimmt auf den Shelly
Danke im voraus und noch lg -
Hallo,
Bzgl. Payload, poste bitte deinen NodeRed Flow, damit wir den prüfen können. Optimalerweise mit Debugausgaben.
Habe das bei mir gerade nachgetestet und funktioniert ohne Probleme.Schalter:
Ich wüde das Blockly ungefähr so aufbauen (nicht schön aber selten):Für den zweiten Teil brauchst du nur "Rolladen Buero Power1" durch "Rolladen Buero Power2" ersetzen und den Open-Datenpunkt
durch Close zu tauschen.Schicke mir bitte noch mal die RAW-Ausgabe vom Shelly Datenpunkt "state". Bin mir aktuell nicht sicher, ob dieser
eine String-Ausgabe zurück gibt.