NEWS
Trigger mit Strings
-
Guten Morgen,
ich brauche mal kurz Hilfe: Und zwar will ich eine Telegram Nachricht schicken, sobald der Wert SOC/Ladezustand sich ändert, einen bestimmten Ladezustand erreicht hat und das Fahrzeug natürlich verbunden (=connected) ist. Aber es scheint so zu sein, dass plugConnectionState kein einfacher boolescher Operator (true/false) ist. Dementsprechend funktioniert das Blockly leider nicht. Worauf muss ich dann prüfen?
Danke vorab!
-
-
@dr-bakterius danke, ich habe jetzt noch eine Zwischeninfo (Auto ist angeschlossen) eingebaut:
mal sehen, ob es damit funktioniert
-
@fir3drag0n Da bekommst du halt bei jedem Prozent Ladung eine Nachricht das geladen wird. Ebenso solange der Ladestand unter 10% ist. Aber wenn du das möchtest.
-
@dr-bakterius nee, eigentlich soll er mir nur 1x bei weniger als 10% und jeweils bei 10%-Schritten eine Nachricht senden
-
@fir3drag0n said in Trigger mit Strings:
@dr-bakterius nee, eigentlich soll er mir nur 1x bei weniger als 10% und jeweils bei 10%-Schritten eine Nachricht senden
Wie müsste ich es ändern?
-
Zusätzlich zu
@dr-bakterius sagte in Trigger mit Strings:
@fir3drag0n Da bekommst du halt bei jedem Prozent Ladung eine Nachricht das geladen wird. Ebenso solange der Ladestand unter 10% ist. Aber wenn du das möchtest.
ist die Frage wie schnell/häufig der ID3 den SOC meldet. sonst kann es ja sein, dass die "ganzen 10er" übersprungen werden.
z.B. 21 -> 19
-
@homoran Ginge es ggf. auch andersherum mit "größer als letztes" und dann gibt er mir z.B. 10 Folgewerte aus - so könnte ich umgehen, dass er die Werte überspringt?
-
ich werde es jetzt mal mit "größer als letztes" und >= 10/20/30 usw. probieren und schauen, wie oft Werte bzw. der SOC über den Adapter übermittelt werden.
Kann ich denn die Anzahl der zu übermittelnden Werte begrenzen?
-
@fir3drag0n sagte in Trigger mit Strings:
Kann ich denn die Anzahl der zu übermittelnden Werte begrenzen?
Du meinst, dass er dich nur einmalig benachrichtigt wenn z.B. die 10% erreicht sind? Ja das kann man indem man eine Variable auf
true
setzt wenn benachrichtigt wurde und vor der Benachrichtigung abfragt ob dieseungleich true
ist. Wenn die Ladung abgeschlossen ist, setzt man die Variable(n) wieder auffalse
. -
Leider wird jetzt genau das gemeldet und immer nur 10%
-
also so in etwa?
....
Wie verhindere ich, dass es bei den 10% stehen bleibt?
-
ich versuche es nun mal mit Intervallen:
-
@fir3drag0n warum so kompliziert ? Warum nicht einfach :
Und wenn du nur ganze Vielfache von 10 haben willst:
Nachtrag:
Mit dieser Anpassung bekommst du beim Anstöpseln eine Meldung wie weit der ID3 aktuell geladen ist.
Wenn du alle 10 % über den Ladezustand informiert werden willst würde ich den Folgenden Ansatz nutzen:
-
@fir3drag0n sagte in Trigger mit Strings:
Wie verhindere ich, dass es bei den 10% stehen bleibt?
Indem du für jeden 10%-Schritt eine eigene Variable nimmst und darauf prüfst. Oder du schreibst in die Variable den gemeldeten Wert rein und prüfst darauf. Also wenn 10% erreicht, dann schreibst du '10' in die Variable. Und du prüft bei 10% ob die Variable kleiner 10 ist, bei 20% ob sie kleiner 20 ist, usw...
-
@asgothian das funktioniert jetzt, perfekt!
kann ich noch die Bedingung einbauen, dass er mir immer einen neuen Wert übermittelt (bei > 10 SOC), wenn der Wert mindestens um 5 höher liegt?
-
@fir3drag0n Klar.. du musst nur die Berechnung des "Limits" und des Textes anpassen. Wenn du dir die Formel hinter
und
anschaust dann liefern die immer Zahlen im 10-er Raster. Wenn Du ein 5er Raster haben willst sollte es reichen die beiden Zahlen in den Formeln durch 5 zu ersetzen.
A.
-
@asgothian aber /10 * 10 ist doch einfach immer nur der Wert?
Zumindest erhalte ich da immer Werte, die nur durch das Update Interval des Adapters bestimmt werden und wie oft da neue Werte übertragen werden.
-
x/10 * 10 wird auch nie berechnet.
Da steht im einen Fall roundup(x/10) * 10, im anderen rounddown(x/10) * 10
Das Updateintervall des Adapters bestimmt die maximale Frequenz mit der du Meldungen bekommen kannst. Wenn du eine Meldung bekommen hast führt das hochstehen der Meldeschwelle dazu das der nächste wert erst gemeldet wird wenn die neue Meldeschwelle überschritten wurde.
A.
-
@asgothian ok, verstanden, aber wieso wird die Abfolge dann nicht berechnet, z.B. bei einem SOC von 60 (%), dann rechnet er also nicht (60/10)*10, sondern macht mit "Limit" was?
Und warum erst dividieren und dann wieder mit dem selben Wert multiplizieren?