NEWS
Migration Scriptgui ccu.io -> iobroker.javascript
-
- (Wie) kann man am intelligentesten manuell über iobroker.admin eine Variable anlegen? `
Geht momentan nicht. Und ob es sein soll, da bin ich noch nicht schlüssig.
@Heinzelmaennchen:
- Wie geht so etwas aus einem Script heraus? Und wie lange ist eine solche Variable dann gültig. Nur für die Laufzeit des Scriptes oder persistent immer? `
Da hat schon bku wunderbar geantwortet:
createState('MyNewState');// Immer und überall (unter javascript.0.MyNewState) da.
- (Wie) kann man ein bestehendes ccui.io prg oder script am besten importieren? `
Momentan kenne ich nur den Manuelweg. Die Befehle sind meinstens auch in ioBroker da. Und wenn was nicht geht => anpassen.
- (Wie) kann man am intelligentesten manuell über iobroker.admin eine Variable anlegen? `
-
Hallo Bernd,
na das ging mal schnell
Danke dafür
Und sieht darüber hinaus auch noch sehr danach aus, als könnte ich das script mit ein paar kleinen Änderungen auch fast so übernehmen.
Wenn ich das richtig interpretiere bildest Du den Durchschnittswert aus den letzten 3 Werten, richtig? Wie lange ist den die Zeitdifferenz dazwischen? Es geht mir dabei darum, ein Gefühl zu entwickeln, wie ich das bei mir angehe, da ich je nach Messpunkt zwischen zwei Messungen ca 500ms habe. Und von den Messpunkten habe ich fast 35 Stück übers Haus verteilt!
Gruß
Bernhard
-
Bernhard,
ja du hast das richtig erkannt - aber ich mittele mir nur 3 Stromverbrauchsmessungen um Spitzen auszugleichen. Ist auch noch mehr test. Meine Messwerte kommen so alle 3 Minuten. Läuft z.Z. ohne Prob.
Ob dein Volumen so funktioniert kann ich nicht sagen - vom Gefühl bin ich eher skeptisch. Ausprobieren!
Gruß Bernd
-
Hallo Bluefox,
- (Wie) kann man ein bestehendes ccui.io prg oder script am besten importieren?
Herzliche Grüße
Bernhard `
Am besten mit ScriptGUI für ioBroker. Aber das dauert leider noch etwas :oops:
-
Hallo,
hab jetzt doch schon mal angefangen, in iobroker zu scripten, damit ich beim Usertreffen nicht ganz unbeleckt dastehe. Die Portierung aller Skripte aus CCU.IO ist ein Riesenbatzen für mich (z.Zt. 78 Skripte, teils mehrere Seiten lang). Ich fange erstmal an mit den neuen Scripts, die keine Homematic-Datenpunkte verwenden (Adapter noch nicht aktiviert).
Frage 1: Das Anlegen einer Variable ist oben erklärt (createState). Gibt es die Möglichkeit, die Variablen näher zu definieren (so wie in CCU.IO mit setObject)? Ich möchte festlegen, welcher Typ sie ist (Boolean, Zeichenkette, etc.), welche Einheit sie verwendet (zB Volt oder °C) und schließlich einen String mit Leerzeichen zur Benennung in Yahui (dafür auch das obligatorische r in Klammern).
Frage 2: Wo werden die Scripts abgespeichert? Kann ich sie nur im Adapter editieren oder kann ich sie mit auch im Dateisystem finden und mit einem externen Editor arbeiten?
Die zwei Fragen möchte ich klären, damit ich mir nicht Doppelt Arbeit mache.
Gruß
Pix
EDIT: Wichtig sind für mich vor allem Variablen vom Type Werteliste. Wie erstelle ich die?
-
@bku:Hallo Bernhard,
schau mal mein Script an. Erzeugt eine Variable "DVerbrauch" rechnet was und schreibt den Wert in die Variable.
Die Variable ist immer verfügbar bis du sie löscht. Du findest sie bei den Objekten wieder und kannst sie darüber dann visualisieren.
Gruß Bernd `
Hallo Bernd,
wie hast Du in der CCU die Variable "Stomverbrauch" (bei Dir hm-rega.0.9919) erzeugt?
Die Diagramme in der CCU finde ich schon ganz sinnvoll, z.B. kWh im Tagesverlauf nach Stunden, Im Wochen- und Monatsverlauf nach Tagen.
So etwas würde ich gerne in ioBroker nachbilden, frage mich nur wie?
Der ENERGY_COUNTER im hm-rpc Objekt zählt ja einfach nur hoch.
Jetzt könnte man jede Stunde das Delta der Werte nehmen und in eine Javascript Variable schreiben.
Ebenso um 0:00 Uhr das Delta der Werte zwischen 24h.
Ich habe allerdings keine Ahnung, wie ich das Umsetzen kann.
Mit Javascript und Schedule? Und dann? wie kommt man an die richtigen Werte um das Delta zu bilden?
Meine Frage oben zielte vor allem darauf, ob die gewünschten Werte schon in der CCU vorliegen und ich einfach diese verwenden kann.
VG,
Michael
-
wie hast Du in der CCU die Variable "Stomverbrauch" (bei Dir hm-rega.0.9919) erzeugt? `
Ist noch aus einer Script-Berechnung in CCU.IO - hab da noch Solar-Werte die ich rein- bzw. rausrechne. Dort wird die Variable in die CCU geschrieben.Da ich im "Scripten" noch nicht so gut bin, ist es noch nicht in ioBroker portiert …..
Gruß Bernd
-
@bku:Ist noch aus einer Script-Berechnung in CCU.IO - hab da noch Solar-Werte die ich rein- bzw. rausrechne. Dort wird die Variable in die CCU geschrieben.
Da ich im "Scripten" noch nicht so gut bin, ist es noch nicht in ioBroker portiert …..
Gruß Bernd `
Danke für die Rückmeldung.
Na, dann ist das ein Thema für später, um ein bisschen in Javascript reinzukommen
-
@pix:Gibt es die Möglichkeit, die Variablen näher zu definieren (so wie in CCU.IO mit setObject)? `
In der neuen Version (vor 5 Minuten) gibt es die Möglichkeit:https://github.com/ioBroker/ioBroker.ja … parameters
createState('myVariable', {unit: '°C', type: 'number'});
@pix:Wo werden die Scripts abgespeichert? `
Die kann man leider direkt nicht editieren. Aber da wird ace editor verwendet. Und der ist wirklich bequem. Und wenn nicht, sage einfach und wir werden es verbessern.@pix:Wichtig sind für mich vor allem Variablen vom Type Werteliste. Wie erstelle ich die? `
createState('myVariable', {type: 'number', states:['first','second',third']});
-
Danke, das hilft mir weiter.
Habe noch https://github.com/ioBroker/ioBroker/blob/master/doc/SCHEMA.md#state gefunden.
Gruss
Pix
-
Hallo,
@Bluefox:Die kann man leider direkt nicht editieren. Aber da wird ace editor verwendet. Und der ist wirklich bequem. Und wenn nicht, sage einfach und wir werden es verbessern. `
Der Editor zeigt mir immer nur 23 Zeilen auf einmal an, auch wenn ich das Fenster größer ziehe (Browser Safari und Chrome auf OS X Yosemite).Die Doku der Parameter für createState ist unvollständig. Wie nutze ich "forceCreation"? Wenn ich z.B. den Namen oder die EInheit einer Variable im Nachhinein ändern will, sollte sie beim Reload die Änderung in der Deklaration übernehmen. Bisher muss ich sie immer löschen und das Skript neu starten. Das ist sicher nicht gut u.a. für History.
Nutzt man das so?
createState('Alarmanlage', 0, {forceCreation: true}, {name: 'Status Alarmanlage (r)', type: 'number', states:['unscharf','scharf']});
Gruß
Pix