Skip to content

Skripten / Logik

Hilfe zu JavaScript, Blockly, TypeScript, Node-RED, Scenes und text2command

16.4k Themen 211.6k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Themen
    48k Beiträge
    M
    Kleines Update, habe ja schon etwas länger nicht mehr zum eigentlichen thread-topic was gepostet: Man sieht das Diagramm wie die Akus Laden/Entladen und im Hintergrund die SOC der beiden Akkus, darunter die Produktivzeiten der Kimas: [image: 1763585648572-968e1497-7da9-41d1-9ecf-a5462d11beac-grafik.png] Mein script läuft, heute war Schietwetter, morgens schon der akku Ebbe (weil gestern auch Schietwetter war). Die Akkus haben dann brav geladen, den Start der ersten Klima (Heizung) unterstützt und über den Tag bis zu 3 Klimas parallel am Leben gehalten. Abends war dann wieder Ebbe in den Akkus. Ergo... ich brauche wohl mehr PV... lol Habe nun eine schöne Balance mit wenig Relaisgeglacker. Realisiert über eine: Totzone um das Einspeiseziel rum -> weniger Steuerregelungen AC-Mode Switch Delay das dynamisch ist. Prüfe off-Loop ob die Zendure beide geschaltet haben und das jeweilige Powersetting annehmen und gebe dann erst die eigentliche Steuerung wieder frei eine permanente Überwachung von Soll- und Istwerten beim Laden/Entladen der Akkus -> weniger Steuereingriffe Sollten die Akkus mehrere Zyklen von den geforderten Werten abweichen werden Sie per Brute Force in die Spur gebracht während die Dynamik pausiert und dann mit verifizierten Start-Werten anstartet. Ist noch ein alter fail-safe, wird faktich aber nicht mehr getriggert. etc. Integration der Ladesäule und Klimageräte ist in die Akkusteuerung abgeschlossen, dort bin ich auch sehr zufrieden mit der Funktionalitätund Stabilität/Vorhersagbarkeit des Systems. Todo/Vison: Das eigentliche Ziel fürs kommende WE ist vollkommen aus einem Timed Loop bei der Steuerung auszusteigen. DIe Überwachung wird dann auch nur dynamisch nach reinem Steuerbefehl aktiviert werden. Ziel ist es (Ich kann ja sicher nur ca. alle 15 Sekunden zu regeln(kurze Zwischentakte mit ca. 8 Sekunden sind möglich aber nicht bulletproof in der Ausführung), bei Netzbezug im optimalen Fall schon mehr als 15 Sekunden seit der letzten Regelung zu haben und dann instant und nicht erst im Timer reagieren zu können. Und bei steigendem LADEN-Potenzial reichen mir eigentlich 50 oder 100 Watt Schritte, ich muss da nicht jedem Elektron hinterhecheln denke ich. Wird aber tricky denke ich, das ganze System dann synchron und ohne flattern zu halten. Prio sollte sein: Schnell regeln zu können, wenn es anfängt Geld zu Kosten (Netzbezug) und entspannt wenn man lädt. Idz. ist das schon ein relativ üppiges Blockly geworden: [image: 1763587406663-882f3968-5ef3-4e87-af58-cc5bf1a15454-grafik.png] Und das hier beeinhaltet nicht die Änderungen an den Ansteuerungen der Klimas und WB sowie die ganzen Delta/Zeit Wert Berechnungen im Hintergrund.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Themen
    78k Beiträge
    HomoranH
    @tiobb mach mal ein reconfigure
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Themen
    13k Beiträge
    HomoranH
    @fiddle sagte in [Gelöst]: Adapter per {Node Red | JS} (de)aktivieren: Ok, nicht als "Wert" schreiben, sondern als "Befehl". Dann scheint ihn das zu beeindrucken. du zeigst ja nichts, aber es geht mit true/false [image: 1763416200051-screenshot_20251117-224854_firefox.jpg] gesteuert über eigenen DP vom typ Bool
  • Adaptereinstellungen mittels Skript ändern?

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    654 Aufrufe
    apollon77A
    Super und gern doch. iobroker und auch allgemein JavaScript ist sehr mächtig. Und wenn was nicht geht bietet npm als registry alles was es gibt und man kann auch diese libraries nutzen.
  • Eigene icon einfügen

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    J
    Hat keiner eine Idee wie man eigene icons einfügen kann?
  • [gelöst] S0-Impulszähler in iobroker abbilden

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    2k Aufrufe
    A
    Habs :-) Mega, mein "erstes Skript" :-D: createState('Strom.Zähler1'); createState('Strom.Zähler2'); createState('Strom.Zähler3'); createState('Strom.Zähler4'); createState('Strom.Zähler5'); createState('Strom.Zähler6'); var request= require('request'); schedule("* * * * *",//jede Minute wiederholen function() { request.post({ url: 'http://10.4.4.66' }, function(error, response, body){ if (body) { var input = body; var array = input.split(","); setState('Strom.Zähler1', array[0]); setState('Strom.Zähler2', array[1]); setState('Strom.Zähler3', array[2]); setState('Strom.Zähler4', array[3]); setState('Strom.Zähler5', array[4]); setState('Strom.Zähler6', array[5]); } }); } )
  • Fenster länger als 10min geöffnet -> Alarm

    Verschoben
    3
    1
    0 Stimmen
    3 Beiträge
    834 Aufrufe
    A
    Vielen Dank. Bei mir jetzt so. 4677_blocky.jpg
  • Zusätzliche NPM-Module aktualisieren

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    431 Aufrufe
    Niemand hat geantwortet
  • Umwandlung DEC in BIN bzw. Aufteilung in einzelner BITS

    Verschoben
    4
    1
    0 Stimmen
    4 Beiträge
    794 Aufrufe
    T
    Hallo Paul, schon mal vielen Dank für deine Antwort und LÖSUNG!!! :D Ich habe diese heute morgen mal Studiert und ausprobiert. Da meine JS-Kenntnisse sich auf 0,1% definieren lassen(0,1% = ich weiß das es einen JS-Adapter gibt. ENDE :lol: ), war es nicht ganz so einfach wie gedacht :lol: Aber ich denke ich habe es jetzt verstanden und mal versucht es für JS-Anfänger zu beschreiben. Ich hatte bei dem Import noch eine Fehlermeldung die ich jetzt hoffentlich berichtigt habe? function dec2bool(in) { (habe ich in dp geändert) for(var i = 0; i < 8; i++) { var b = !!(in >> i & 1); (habe ich in dp geändert) (Es läuft auf jeden fall bei mir mal) Nur ich denke das der Weg "Rückwärts", also DOs zu schreiben doch nicht so einfach ist wie gedacht. Aber ich werde es demnächst versuchen und mein Ergebnis Posten :D `const idVar = 'ASIM.Telegram.MODBUS_DI2'; // Datenpunkt-ID Modbus Input var name = 'Modbus.DI_2'; //Legt 8 Datenpunkte im Javascript-Objektordner an var bits = [false,false,false,false,false,false,false,false]; for(var i = 0; i < 8; i++) { var di = 8 - i; createState(name + di, false, {type: 'boolean'}); } function dec2bool(dp) { // function = js befehl / dec2bool = frei vergebener Name für die Funktion / dp = temporäre Variable für die funktion for(var i = 0; i < 8; i++) { var b = !!(dp >> i & 1); if(b != bits[i]) { var di = 8 - i; setState(name + di, b, true); bits[i] = b; } } } on(idVar, function(dp) { // Triggern bei Wertänderung dec2bool(dp.state.val); })`[/i][/i]
  • Ausschalttimer in Blockly

    Verschoben
    13
    0 Stimmen
    13 Beiträge
    3k Aufrufe
    R
    ich wollte mich nochmal bedanken und ein feedback geben …. ich habe das jetzt alles mal so nachgebaut, und es funktioniert , vielen dank das mir so schnell und auch so einfach geholfen wurde .... war echt überrascht das die lösung direkt in der ersten antwort kam .... 1000 dank nochmal :)
  • Switch Anfangsstatus

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    621 Aufrufe
    T
    Der Punkt ist aber, er muss nicht angeschaltet werden. In den switch node können sachen reinfließen und alle werden zu dem entsprechenden Status des switches geändert geändert. Also kommt eine 1 an den switch folgt ein "true" wenn er eingeschaltet ist. Kommt die 1 wenn der schalter ausgeschaltet ist folgt ein "false". Diese 1 die ich schicke soll aber nicht den Status des schalters ändern können, ich brauch aber ein anfängliches "true" für den schalter. Ich hoffe das war irgendwie verständlich …
  • Verknüpfen mehrerer Objekte mit Blockly

    Verschoben
    31
    0 Stimmen
    31 Beiträge
    6k Aufrufe
    paul53P
    @rantanplan: "Objekt ID" liefert nichts. ` Habe gerade mal mit boolschen Test-Datenpunkten getestet: "Objekt ID" liefert die ID des auslösenden Datenpunktes, das Script funktioniert wie erwartet.
  • Problem beim Skript für Farbwechsel mit Hue

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    J
    hmm also dein Skript hab ich versucht, es regt sich da allerdings rein gar nix ^^ Ich hab mir in der Zeit mal ein zweites Skript mit Blockly gebastelt. Das funktioniert soweit. Allerdings ist die Problematik, dass das Objekt Philips_hue.Innr_r1.b (Der der die blaue Farbe der LED steuert) auch die Helligkeit ändert. Durch einfügen vom Objekt Helligkeit_Wohnzimmer. Springt die Helligkeit zwar wieder auf den Ursprungswert zurück. Jedoch erhöht sich die Helligkeit einmal auf 100% und fällt dann runter, was ein unschönen "Blitz"-Effekt erzeugt. Wer eine Idee wieso Philips_hue.Innr_r1.b die Änderung der Helligkeit (Philips_hue.Innr_r1.bri bzw. Philips_hue.Innr_r1.level) vornimmt? [image: yaqgnxrd.jpg]~~![](</s><URL url=)http://fs1.directupload.net/images/180331/yaqgnxrd.jpg" /> [image: dqpncdvx.jpg]![](</s><URL url=)http://fs1.directupload.net/images/180331/dqpncdvx.jpg" />~~
  • Blockly Exec und Multihost ?

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    745 Aufrufe
    HomoranH
    genau! und ein Script mit einem EXEC für den Slave muss dann der Instanz .1 zugewiesen werden. Gruß rainer
  • [gelöst] Ist es möglich einen Ordnerinhalt einzulesen

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    531 Aufrufe
    PeoplesP
    Irgendwo gibt es anscheinend eine Verwendung von fs. Obwohl ich nur deinen Codeschippsel in einem eigenen Script verwendet habe. Wo weis ich aber nicht. Doch wenn ich das ganzen auf fs1 ändere funktioniert alles bestens Dank dir
  • Script für Fritzbox incoming calls mit http request

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    D
    Habe gerade gesehen, dass es jetzt geht, dass es erst gefüllt wird, wenn ein Anruf kommt. Aber eine Rückwärtssuche ist das nicht, hat da jemand bereits mal das oertliche angesehen, da gibt es eine api? http://www.dasoertliche.de/?form_name=s … =%callerid
  • Javascript schedule alle 15 min /15 funktioniert nicht

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    3k Aufrufe
    SteffS
    Hallo Zippolighter, hattest du vielleicht beim erstellen der Cron-Ausgabe statt "Alle N Minuten" die Eingabebox "Jede ausgewählte Minute" benutzt? Das könnte den Fehler erklären (bin selber auch schon in die Falle getappt) :D Gruß Steffen
  • Super simples Skript für Steckdosenüberwachung / Waschmaschine

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    575 Aufrufe
    Niemand hat geantwortet
  • Backup - iobroker stoppen bei redis-server

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    1k Aufrufe
    apollon77A
    Ohje … bin nur mit Handy bewaffnet, daher jetzt nur Stichworte zum selbst googeln. Wenn ich am Wochenende mal Zeit hab tipper ich mal was längeres zusammen: generell „Redis persistent“ Redis kann snapshots machen als file. Automatisch (konfigfile von Redis einstellbar) oder per Redis-cli mit Kommando BGSAVE. Das file kannst du dann sichern. Und falls er mal neu startet lädt er das auch wieder. Sind halt nur snapshots zu Zeitpunkten. Alles was danach sich ändert ist nicht gesichert. adf auch konfig im Redis konfig. Dann schreibt er zusätzlich eine Art logfile und hat damit auch bei einem Neustart immer den aktuellsten stand. Aber ist für sd Karten eher nicht geeignet ;-) Das skript was alle States rauszieht und in ein file speichert geht auch. Am Ende ist es die Frage welche Sicherheit du haben willst vor allem wenn du Redis mal Updates und er dabei Neustartet. Im default sind alle Daten weg.
  • Werte aus Ical bzw. google kalendar auslesen

    Verschoben
    7
    1
    0 Stimmen
    7 Beiträge
    1k Aufrufe
    juergen2908J
    Hallo, Zur Info: Mit ifttt funktioniert es jetzt :) War doch einfacher als im ical! Werde jetzt mit blockly weiterarbeiten. Jetzt muss ich noch schauen, wie ich die Minutes und Seconds auf Deutsch umwandle? [image: 1693_ifttt_stracva.png] LG
  • [GELÖST] state auslesen und state setzen

    Verschoben
    6
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    T
    Guten Morgen Paul, erstmal, Danke, Danke und nochmal Danke. Der Grund warum ich den Typ "String" gewählt habe ist Copy&Paste… Ich versuche gerade endlich Javascript zu verstehen und zu Lernen und deswegen versuche ich mich an kleinen Scripts um zu verstehen wie sieh funktionieren. Es ist für mich sehr Hilfreich das du mir auch bestimmte Zustände erklärt hast, wie z.B. das der Datenpunkt erst Aktuallisiert wird wenn er geändert wird und mir aber auch aufzeigst wie mann dies erzwingen kann. Vielen Dank, da habe ich wieder etwas gelernt! :D Schöne Ostern und Gruß, Tom
  • State automatisch erfragen Hue Lichter

    Verschoben
    16
    0 Stimmen
    16 Beiträge
    2k Aufrufe
    P
    @mickyboys: Das funktioniert aber nur einmal! Wurde das Licht manuell ausgeschalten und man versucht es im VIS anzuschalten bleibt der Status im VIS auf ON. Da das Skript ja nur triggered sobald der reachable Status von True auf False wechselt. In dem oberen Fall ist reachble aber schon auf False und aendert deshalb nicht mehr den Status im VIS… Noch eine Idee - ich kann doch nicht der einzige sein der seine Hue Lichter versucht sinnvoll zu schalten - Danke, Axel ` Verbiete im VIS einfach das schalten bzw. verstecke das Widget, wenn reachable auf false steht, du kannst dann ja eh nicht einschalten. Alternativ triggere ebenfalls auf "on" bei "false->true" und frage dann reachable ab. Wenn reachable noch auf false steht setze "on" wieder auf false. Ggf. noch mit Verzögerung vor der reachable-Abfrage, um auf Aktualisierung nach Schalten am Wandschalter zu warten. Und nein, so richtig sinnvoll wird es leider nicht werden, wenn du HUE-Lampen zusätzlich mit den Wandschaltern stromlos schaltest. weitere Lösung: Die Wandschalter durch Zigbee Schalter ersetzen und die Auslässe dauerhaft bestromen.
  • Sonnenuntergang als Trigger

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    modmaxM
    Um mehr als JA zu sagen: In Blockly den Auswahlpunkt "trigger" auswählen. Dort finden man das Blockly für "Astro", das per default auf Sonnenuntergang steht, aber direkt im Blockly geändert werden kann.

509

Online

32.4k

Benutzer

81.4k

Themen

1.3m

Beiträge