Day 17: Time-controlled Lights
The door of day 17 reveals another potentiometer. Now we have one potentiometer for each LED and thus we will develop the program of Day 13, the Smart Lights, so that we will get a more convenient and intuitive dimming feature. We will also learn today how we can start timed events with Node-RED.
Activate today’s program in the web interface. As always disable previous flows and change the MQTT topic to reflect your personal ID and then install today’s flow into the Node-RED environment.
As you know already, you can turn the LEDs on and off via the hardware buttons or via the user interface. The brightness of the individual LEDs is controlled by the potentiometers. As an alternative to the buttons, you have got the injection nodes in the corner bottom left. You can use them to specify the times a command is sent to the board. All you have to do is double-click on the corresponding node and select the time and also the days when the message should be sent. You can use it for example, to set an automatic lamp in a living room or an aquarium or activate special lighting on working days – fully automatically and much like the smart home concept.
Hallo,
für Tag 17 wird mir das Dashboard von Tag 14 angezeigt.
Kein Dashboard Layout von Tag 17.
Was muss man machen, keine Beschreibung vorhanden für den Fall.
Hallo Leute,
bis hier hab ich alles hinbekommen! Super Sache das Ganze.
Lieder funktioniert meine Inject Node at a specific time nicht?
Hab die Zeitzone auf dem PI zurückgesetzt und alles neu gestartet, ohne Erfolg.
Habt Ihr eine Idee woran das sonst liegen könnte?
Zeit setzen und depoyen nicht vergessen
Danke für deine Antwort. Das mache ich ja und trotzdem funktioniert das mit der Zeit nicht.
Injects die Millisekunden zählen funktionieren nur die Injects mit Uhrzeit nicht…
Frage an die Fortgeschrittenen hier: Ich möchte den “pin_state” von LED1 und LED2 auslesen bzw. weiterverarbeiten, der mir über [PID]/out geliefert wird. Dort ist das Ganze aber verschachtelt in einem “array” als “object” abgelegt. Irgendwie gelingt mir das nicht. Am Ende möchte ich in Abhängigkeit des Wertes “pin_name” (LED1 oder LED2) den jeweiligen Wert “pin_state” haben (msg.payload).
Beispiel:
[PID]/out –> wenn “pin_name”==”LED1”, dann lese Wert aus “pin_state” von LED1 –> setze msg.payload mit diesem Wert (boolean)
Ist echt tricky sowas zu zerlegen. Ich hab mich mal dran versucht: https://gist.github.com/leofonic/380269ec90ff1178e569915ce1883ee5
Wow! Danke. Funktioniert einwandfrei. Auf das “convert to object” bin ich nicht gekommen. Ich habe mir nach jedem Schritt in Deiner Lösung ein Debug-Node gesetzt und jetzt verstanden, wie die Zerlegung in mehreren Stufen funktioniert. Ist echt tricky, Node-RED ist Neuland für mich. Aus dem User-Guide (https://nodered.org/docs/user-guide/messages) bin ich nicht richtig schlau geworden, vor allem, weil Beispiele fehlen.
Das “convert to object” ist das was in den Beispielen einfach “json” heißt, ich dachte das hast du schon weil in deinem Screenshot ein Objekt ist, bei mir kommt direkt aus dem mqtt node ein json String. Aber Hauptsache es geht, bin auch node-red Anfänger ;)
Ich hatte vor lauter Probiererei eine falsche Action (Always convert to JSON-String) gesetzt…
Zwei kleine Fehler sind mir aufgefallen:
Im Beschreibungstext steht “Damit können wir das Programm von Tag 13, die smarten Lichter,…” –> das war aber der Tag 14!
Im Dashboard des heutigen Tages (17) wird “Day 14” angezeigt.
Ich habe mir zusätzlich auch noch die aktuellen Poti-Werte im Dashboard anzeigen lassen.
Hier die Nodes dazu:
du hast die LED-Nodes aus dem 14 Tag kopiert!
Wähle für die Group ein andere.
Nein, habe ich nicht. Die beiden Nodes LED1 (on/off) und LED2 (on/off) waren im Source-Code schon falsch. Dort steht fälschlicherweise Day14 statt Day17 drin. Das ist auch in Deinem Screenshot im 2. Beitrag zu sehen. Erst bei Deinen späteren Versuchen steht dann Day17…
das stimmt, da habe ich gar nicht darauf geachtet, sorry.
Aber mit der ‘Group’ stimmt.
was mach ich falsch.
keine Werte und drittes Feld.
Flow
Werte jetzt ja.
In ‘get values’ den richtigen Wert setzten.
Aber drittes Quadrat ist noch.
Bild
Schwere Geburt, gleiche Gruppe (Group).
Sh… wenn man mit dem gleichen Namen einige hat.
Woran kann man die unterscheiden?
Funktioniert gut. Die Inject-Nodes kann man mit payload “boolean” auch direkt an die Dashboard-Switch-Nodes hängen. Dann werden bei einer Auslösung (“Zeitschaltuhr”) auch die Dashboard-Switches aktualisiert bzw. diese zeigen dann den gesetzten Status gleich an.
super, danke
funktioniert.
Ich hatte beim ersten testen nicht beachtet das du extra boolean geschrieben hast und auch für so ‘Dumme’ wie mich ein Bild angefügt hast.
Aber nun funktioniert es un mit Rückmeldund der Taster.
Danke
Hallo,
noch ein Hinweis, wer die Inject-Nodes benutzt, darf dort nicht nur die Zeit/Zeiten ändern, sonder muß das ganze noch
‘deployen’
Hallo,
bei mir funzt es auch bisher ganz gut und macht auch riesig Spaß.
Nur heute hatte ich in unregelmäßigen Abständen, ca. alle paar Minuten, einen Reboot auf dem NodeESP.
In meinem Setup versuche ich alles im heimischen Netz zu halten: Ein Raspberry PI 2B als Node-RED- und Mosquitto-Server am LAN, Node-RED-Client im Browser und dazu MQTTBox oder MQTT.fx zum Testen und Loggen auf Windows 10.
Auffällig ist, dass innerhalb weniger Minuten schon über 1000 MQTT Telegramme über meinen Broker laufen. OK, die analogen Potis zappeln halt auch ständig. Aber damit sollte eigentlich weder der PI noch das Netzwerk ausgelastet sein (was sich noch ändern könnte, wenn dann mal giga-zig Things im Internet mitspielen).
Lässt sich hier irgendwas konfigurieren oder hab ich hier ein Netzwerkproblem?
Schön wäre natürlich, wenn es die Möglichkeit gäbe, hier an der Firmware unseres Boards direkt zu drehen. Oder zumindest mit den Sourcecode könnte man das Verhalten besser verstehen, als bisher mit der Blackbox.
Bei mir startet das Board sofort neu sobald ich irgendwas mache, ob am ESP selber oder über Dashboard, egal.
Ich habe das gleiche Verhalten wie Ray… das Board rebootet bei diesem Experiment unregelmäßig plötzlich neu. Auch ich habe alles im heimischen Netz. Ich denke nicht, dass es an unseren Netzwerken liegt.
Bild 2
Bild
Hallo,
auch das funktionierte auf anhieb. Danke.