NEWS
Anfängerfrage; Script regelmäßig wiederholen
-
Guten Abend wertes Forum.
Ich habe eine PV-Anlage mit Batterie. Ich möchte nun die Werte der Batterie auslesen und grafisch die unterschiedlichen Ladezustände anzeigen lassen. Dazu habe ich Datenpunkte erzeugt (100, 80, 60 usw). Die DP haben den Zustandstyp Logikwert und die Rolle boolean.
Nun liest das Scrip die Daten der Batterie aus (bspw. falls Wert Batterie kleiner als 80 und größer als 60 mache -> aktualiere DP 60 = wahr; DP 80 = falsch usw)
Über die Sichtbarkeit im VIS2.0 steuere ich dann unterschiedliche Batterie - Icons.
Nun die Frage: Läuft das Script automatisch immer wieder durch? (Vermtutlich nicht) Wie kann ich dafür sorgen, dass die Abfragen und Aktualisierungen regelmäßig durchlaufen?
Danke
-
@rasc
Blockly oder JS?https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps
Scripte werden nicht "gestartet" und "gestoppt". Jedenfalls nicht im hergebrachten Sinn.
Ein Script wird in der Regel 1x gestartet und reagiert dann auf Änderungen an Datenpunkten oder zyklisch (CRON, Intervall).Viel einfacher wäre das Ganze, wenn es für Deine Geräte einen passenden Adapter gibt.
Daher die wichtigste Frage: Was hast Du da am Start? -
@codierknecht Danke für die schnelle Antwort. Ich befasse mich erst seit Kurzem mit dem Thema und will mich langsam herantasten. Der Wechselrichter ist von Fronius. Ich kann die Daten direkt vom Gerät auslesen oder über die Webseite. Sind zwei verschiedene Adapter. und ich nutze Blockly.
-
Der Wechselrichter ist von Fronius. Ich kann die Daten direkt vom Gerät auslesen oder über die Webseite. Sind zwei verschiedene Adapter. und ich nutze Blockly.
Dann solltest Du beim passenden Adapter doch bereits entsprechende Datenpunkte haben, oder?
-
@codierknecht Es gibt jeweils einen DP, der die aktuelle Ladung in Prozent ausgibt. Bspw. 82%. Nun möchte ich visualisieren, wie voll die Batterie ist. Das heißt, ich habe mehrere Icons, die verschiedene Füllstände der Batterie symbolisieren. Da die Sichtbarkeit der Icons in VIS2.0 nur über eine Bedingung (größer oder kleiner oder gleich) gesteuert werden kann, habe ich sozusagen Hilfsdatenpunkte angelegt. Das Script sorgt nun dafür dass immer nur ein einziger Datenpunkt wahr ist. Und je nachdem, welcher dieser Hilfsdatenpunkte wahr ist, wird dann das entsprechende Batterie-Icon auf sichtbar gesetzt. Das heißt, im Laufe des Tages bzw. der Nacht sollte immer ein anderer Hilfdatenpunkt auf wahr und die anderen auf falsch gesetzt werden. Oder passiert das auch, wenn ich das Scrip einmal starte?
-
@rasc sagte in Anfängerfrage; Script regelmäßig wiederholen:
Es gibt jeweils einen DP, der die aktuelle Ladung in Prozent ausgibt
Dann brauchst Du einen Trigger auf diesen DP, wenn Du da unbedingt mit Blockly ran willst.
Würde aber mit einem Alias noch deutlich einfacher gehen:
Du legst Dir im Objektbaum unterhalb vonalias.0
einen DP vom Typ "Zeichenkette" an.
Den lässt Du auf den DP mit dem Ladezustand "gucken".Nun kommt die Lesekonvertierung ins Spiel:
'/pfad/zum/icon/battery_' + parseInt(val/10) + '.png'
Das liefert z.B. bei einem Ladezustand von 75% einen Pfad wie
/pfad/zum/icon/battery_7.png
Jenachdem wie viele Icons Du hast, müsste man das evtl. noch leicht anpassen.Sieht dann im Ergebnis so aus:
-
@rasc sagte: Wert Batterie kleiner als 80 und größer als 60 mache -> aktualiere DP 60 = wahr; DP 80 = falsch usw)
Vorschlag:
-
Warum so kompliziert?
Für VIS2 gibt es nun die Inventwo Widgets als Beta. Hier das Universal Widget. Mit dessen kannst in Abhängigkeit eines Wertes entprechend reagieren und das passende Bild anzeigen lassen.In VIS1 war es das Multiwidget.
-
@schmakus said in Anfängerfrage; Script regelmäßig wiederholen:
Warum so kompliziert?
Für VIS2 gibt es nun die Inventwo Widgets als Beta. Hier das Universal Widget. Mit dessen kannst in Abhängigkeit eines Wertes entprechend reagieren und das passende Bild anzeigen lassen.In VIS1 war es das Multiwidget.
Das finde ich auf den ersten Blick auch nicht gerade einfach. Muss ich mich am Wochenende mal mit beschäftigen.
-
@paul53 said in Anfängerfrage; Script regelmäßig wiederholen:
@rasc sagte: Wert Batterie kleiner als 80 und größer als 60 mache -> aktualiere DP 60 = wahr; DP 80 = falsch usw)
Vorschlag:
Dieses "Falls Objekt..." habe ich gefunden. Dieses "icon" leider nicht.
Ich probiere es jetzt mal mit "Ausführen Interwall 10 Minuten". Mal sehen, ob das klappt.
-
@rasc sagte in Anfängerfrage; Script regelmäßig wiederholen:
Dieses "icon" leider nicht.
So heißt die Funktion. Wenn die erstellt ist, hat man auch einen passenden Block dazu.
@rasc sagte in Anfängerfrage; Script regelmäßig wiederholen:
Ich probiere es jetzt mal mit "Ausführen Interwall 10 Minuten".
Nicht machen!
Sowas macht man mit dem von @paul53 gezeigten Trigger!Beschäftige Dich mal mit den Grundlagen:
https://forum.iobroker.net/topic/70481/blockly-for-dummies-starthilfe-und-tipps -
Nicht machen!
Sowas macht man mit dem von @paul53 gezeigten Trigger!Und mittels "Zeitplan" ist das auch nicht sinnvoll?
-
@rasc sagte in Anfängerfrage; Script regelmäßig wiederholen:
Und mittels "Zeitplan" ist das auch nicht sinnvoll?
Nein - eigentlich nicht.
Du willst doch vermutlich, dass das Icon sich ändert, sobald sich der Ladezustand der Batterie ändert, oder?
Das macht man mit einem Trigger.
Der "abonniert" sozusagen die Änderungen des Datenpunktes und reagiert dann entsprechend.
Ändert sich nix, reagiert er nicht. Er "schläft" quasi.
Ändert sich der Wert im Sekundentakt, reagiert auch der Trigger jedesmal.Klär uns doch mal auf: Wie viele Icons hast Du und wie lauten die Dateinamen?
-
Das macht man mit einem Trigger.
Probiere ich jetzt aus.
Der "abonniert" sozusagen die Änderungen des Datenpunktes und reagiert dann entsprechend.
Ändert sich nix, reagiert er nicht. Er "schläft" quasi.
Ändert sich der Wert im Sekundentakt, reagiert auch der Trigger jedesmal.OK. Ich hatte bei BYDHVS - Adapter folgendes gelesen: " I am definitely not sure if you harm your battery with polling this data too often, so be aware: You are on your own risk!" Das hat mich etwas verunsichert. Den Adapter nutze ich aber nicht.
Klär uns doch mal auf: Wie viele Icons hast Du und wie lauten die Dateinamen?
Sechs. Die Icons sind aus Addictive flavour icon set as PNG
Ist alles noch etwas Spielerei. Ich versuche, ioBroker zu verstehen.
Danke erstmal soweit.
-
@rasc sagte in Anfängerfrage; Script regelmäßig wiederholen:
Sechs. Die Icons sind aus Addictive flavour icon set as PNG
Hmmmm, ich sehe dort 7.
Das wird aufgrund der verwendeten Dateinamen als Alias tatsächlich kompliziert bzw. unübersichtlich.Du machst das über die "Signalbilder"?
Dann würde ich nur eines davon verwenden und den Dateinamen über ein Binding bestimmen.Den Dateinamen ermittelt ein Script über den Ladezustand.
Funktioniert wunderbar
-
Du machst das über die "Signalbilder"?
Dann würde ich nur eines davon verwenden und den Dateinamen über ein Binding bestimmen.Danke. Das klingt für mich im Moment sehr logisch.
Hier komme ich ins Schlingern. 0.userdata.0 ist ein Objektordner. Und was ist "icon"? Ein state - Objekt? Bzw. "SoC"? Die Daten kann ich doch direkt aus dem Adapter des Wechselrichters ziehen, oder nicht?
Den Dateinamen ermittelt ein Script über den Ladezustand.
Das Script verstehe ich soweit.
Danke bis hierhin.
-
@rasc
Unterhalb von0_userdata.0
legt man seine eigenen Datenpunkte an.
Ich habe mir dort einen mit Namen "Icon" angelegt, um den Dateinamen zu speichern.SoC
ist der Datenpunkt, der den Ladezustand (State of charge) der Batterie liefert.
Wo das bei herkommt, solltest Du am besten wissen