NEWS
einfaches skript
-
@freo sagte in einfaches skript:
Ich hab es mit blockly versuch
dann zeig das mal!
dann sieht man vielleicht wo es klemmt -
@homoran Hallo,
ich weiß nicht mal was ich im blockly nehmen muß, alles was ich angefangen habe ergab für mich keinen Sinn.
da ich schon etwas über 70 bin, ist das nicht so einfach
ich möcht eigentlich nur den SoC meine E Autos, welche als Datenpunkt im iobrocker vorliegt, in range umrechnen lassen um mir das in evcc anzeigen zu lassen.
Datenpunkt SoC ist 0_userdata.0.BatteryPercent , der Datenpunkt
für range ist 0_userdata.0.odometerps.Beide sind natürlich angelegt.
Die Berechnung ist ja einfach, komme aber überhaupt nicht mit dem schreiben des scripts zurecht, da blutiger Anfänger!
-
@freo sagte in einfaches skript:
alles was ich angefangen habe ergab für mich keinen Sinn.
aber du hast ja schon überlegt was du tun willst.
Das wird schon passen...irgendwie@freo sagte in einfaches skript:
da ich schon etwas über 70 bin, ist das nicht so einfach
das ist eine Ausrede!
das bekommen wir schon hin -
@homoran
den SoC meines E autos habe ich jedenfalls schon mal in iobroker hinbekommen,
allerdings nur über coppy und paste, da evcc mein Auto nicht einbinden kann.Jetzt wäre es wunderbar, die Reichweite auch noch in evcc zu sehen....
( und doch, das Alter spielt eine Rolle, es wird alles immer komplexer)
-
@freo sagte in einfaches skript:
das Alter spielt eine Rolle,
aber nicht nur für dich!
noch ein Denkanstoss
javascript arbeitet eventbasiert. Also überleg dir was wann warum gemacht werden soll.
wir bauen das schon gemeinsam hin. Du willst es doch auch verstehen!
ich bin nur am Handy! muss also etwas von dir sehen um das zu kommentieren. -
@homoran ok, du meinst ich soll's nochmal mit dem blockly probieren...
Werde heute nicht mehr dazu kommen, morgen werde ich noch mal starten und meine Versuche dann mitteilen.
Vielen Dank erstmal für deine Hilfe
-
@freo passt!
ich geh jetzt auch in deep standby -
@freo Ganz einfach mit einem JS-Script:
let originalValue = getState('0_userdata.0.BatteryPercent').val; let newValue = originalValue / 100 * 460; setState('0_userdata.0.odometerps', newValue, true);
// setState(<Datenpunkt>, <Wert>, <Bestätigt>);
-
@great-sun Das geht auch mit einem ganz einfachen Blockly!
ich denke aber dass es ihm auf Dauer mehr hilft, dieses mit eigenem Hirnschmalz gemeinsam zu "entwickeln", als einfach nur abzutippen.
-
@homoran sagte in einfaches skript:
@great-sun Das geht auch mit einem ganz einfachen Blockly!
ich denke aber dass es ihm auf Dauer mehr hilft, dieses mit eigenem Hirnschmalz gemeinsam zu "entwickeln", als einfach nur abzutippen.
Bin Grundsätzlich Deiner Meinung, aber manchmal steht man wie der Ochse vor dem Berg und wenn man noch nie wirklich etwas mit Programmierlogik zu tun hatte, dann kann so etwas richtig schwer sein, wenn man nicht einmal ein Beispiel gesehen hat.
Kurzgesagt:
@Homoran Wenn ich jemandem erst Programm-Logik beibringen muss, damit das Ergebnis erreicht wird, wird das ganze für denjenigen evtl. so problematisch in der Umsetzung, dass er es ganz lässt. Dann lieber einen Dreizeiler@freo Für Fragen steh ich gern zur Verfügung, sofern wir das dann zumindest, wenn es irgend einen Sinn ergibt, der Community als Anleitung zur Verfügung stellen.
-
@great-sun sagte: einfach mit einem JS-Script:
Das funktioniert nur einmal bei Skriptstart, denn es fehlt ein Trigger.
-
@great-sun sagte in einfaches skript:
Bin Grundsätzlich Deiner Meinung, aber manchmal steht man wie der Ochse vor dem Berg und wenn man noch nie wirklich etwas mit Programmierlogik zu tun hatte, dann kann so etwas richtig schwer sein, wenn man nicht einmal ein Beispiel gesehen hat.
ich bin grenzenloser Optimist
@freo fängt gerade erst an, und da bin ich hoffnungsvoll dass man ihn leitend an die Hand nehmen kann um ihm das Verständnis der Funktionsweise und der Logik zu erklären.
Beim Abtippen/Abschauen von fertigen Blocklys besteht immer die Gefahr, dass mansich wegen des fehlenden Wissens/Verständnissses dabei D7nge interpretiert und dauerhaft ins Hirn einbrennt, die ganz anders gemeint sind.
Erst beim 30. ähnlichen Skript kommt es dann zu "unvorhergesehenen" Abläufen. -
@paul53 sagte in einfaches skript:
@great-sun sagte: einfach mit einem JS-Script:
Das funktioniert nur einmal bei Skriptstart, denn es fehlt ein Trigger.
als Basis um einem Einsteiger die gesamte Funktionsweise von js/blockly zu erklären, wäre das genau richtig.
-
@paul53 sagte in einfaches skript:
@great-sun sagte: einfach mit einem JS-Script:
Das funktioniert nur einmal bei Skriptstart, denn es fehlt ein Trigger.
Aye:
async function setValueUpdate() { let originalValue = getState('0_userdata.0.BatteryPercent').val; let newValue = originalValue / 100 * 460; setState('0_userdata.0.odometerps', newValue, true); } on({id: '0_userdata.0.BatteryPercent', change: 'ne'}, setValueUpdate);
Alle Funktionen, die im Javascript Adapter verfügbar sind, werden https://www.iobroker.net/docu/index-81.htm?page_id=5809&lang=en beschrieben.
Die On-Funktion https://www.iobroker.net/docu/index-81.htm?page_id=5809&lang=en#on_8211_Subscribe_on_changes_or_updates_of_some_state -
Leute!
Das verwirrt doch jetzt nur!
ohne Rückmeldung von @freo , wieweit er jetzt folgen kann, oder gar verstanden hat, ist das zum Lernen kontraproduktiv. -
-
@great-sun Hallo zusammen,
ich bin beeindrukt von den Antworten zu meinem Thema ,
mein Versuch sieht so aus:Mir ist aber dann überhaupt nich klar, wie ich die einfache Rechenformel einfügen muss, bzw. ob ich überhaupt auf dem richtigen Weg bin.
Konnte dann nicht wiederstehen, und habe das Script von GreatSun ausprobiert:
Es funktioniert!!!
Ich wäre nicht darauf gekommen, ehrlichNatürlich möchte jemand keine fertigen Lösungen anbieten ohne das der Empfänger das auch verstanden hat.
Da ich aber noch nie etwas mit programieren zu tun hatte fällt mir das Verständnis dafür schwer.Allen hier sage ich : herzlichen Dank, für eure Hilfe
-
@freo sagte in einfaches skript:
mein Versuch sieht so aus
da könnte man helfen wie es damit richtig funktionieren würde.
@freo sagte in einfaches skript:
Da ich aber noch nie etwas mit programieren zu tun hatte fällt mir das Verständnis dafür schwe
learning by doing - und hast Du dieses Skript welches Du jetzt verwendest auch verstanden ?
VG
-
@freo sagte in einfaches skript:
ob ich überhaupt auf dem richtigen Weg bin.
ja, für den Anfang schon, obwphl ich diesen Baustein noch nie verwendet habe.
Vielleicht zäumen wir das Pferd diesmal von hinten auf.
@freo sagte in einfaches skript:
Mir ist aber dann überhaupt nich klar, wie ich die einfache Rechenformel einfügen muss, bzw. ob ich überhaupt auf dem richtigen Weg bin.
Aber so eine Rechenformel hast du doch schon mal gehabt, oder?
Mach dir Gedanken,
- was du verrechnen willst
- wo du diese Daten herbekommst
- wo das Ergebnis hin soll
Edit:
ich denke ich weiss warum du diesen Block mit Wert von genommen hast!Dieser
lässt sich nicht andocken.
Aus gutem Grund.Doch dazu später
-
@freo sagte in einfaches skript:
Da ich aber noch nie etwas mit programieren zu tun hatte fällt mir das Verständnis dafür schwer.
Deswegen wollen wir das ja ändern!
Wir hören erst auf, wenn du es verstanden hast, nicht sobald es läuft.dazu noch ein paar Tricks
der debug-Baustein
befindet sich unter den System-blöcken.
Hilft ungemein beim suchen nach Denkfehlern, indem er Zwischenergebnisse im log des Editors ausgibt.externe Eingänge
machen die Struktur der Blocklys besser erkennbar und sparen Platz.Die unterste Zeile ist identisch mit der obeten, nur wurde bei der mathematischen Operation mit der rechten Maustaste angeklickt und von "interne Eingänge", was eine lange Kette erzeugt, auf exterbe umgestellt.
Blöcke ausserhalb des Triggerbausteins
werden nur zu Skriptstart ausgeführt.
Will man aber bei der "Entwicklung" nicht auf einen Trigger warten, kann man den interessanten Teil (incl.Debug-Block) aus dem Trigger nehmen.
Jetzt erhält man beim speichern sofort die gewünschte Information