Weiter zum Inhalt

Skripten / Logik

16.7k Themen 216.0k Beiträge

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

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    3k 50k
    3k Themen
    50k Beiträge
    maxclaudiM
    @Murphy-0 sagte: @maxclaudi Habe dein zURLtool geladen und installiert. Die Freischaltung mit den von dir gesendeten Daten funzt perfekt. zURLtool funktioniert ! Vielen Dank für deine Arbeit !!! Hallo Murphy, vielen Dank für deine Rückmeldung und den erfolgreichen Testlauf. Genau so soll es sein: Eintragen, Freischalten und direkt loslegen! Viel Spaß beim Optimieren deines Scripts!
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    Murphy 0M
    @tourer4778 Das ist ganz einfach. Du addierst die Leistung deiner Wechselrichter als maxSolarPower. Dieser Wert wird dann für die Formel zur Berechnung genommen und du bekommst automatisch die Leistung die jeder deiner Wechselrichter haben muss. [image: 1786870575867-img_4130.jpeg] Diese Leistung übergibst du dann nacheinander an deine Wechselrichter. In meinem Blockly unten benutze ich noch einen Korrekturwert für die Leistung. Das liegt an der unterschiedlichen Ausrichtung der Panele und berücksichtigt die unterschiedlich Leistung der Wechselrichter. Der Multiplikator ist mit Pfeil markiert. [image: 1786870876025-img_4128.jpeg] Den Multiplikator brauche ich um die erzielte Leistung jedes Wechselrichters mit dem Bedarf abzugleichen. Meine Nulleinspeisung ist auf ca. -50 Watt ausgelegt. Akku wird nicht geladen. [image: 1786871273695-img_4132.jpeg] Akku wird geladen. Wegen Wolken reicht die Leistung gerade nicht für die gesamt benötigte Menge an Strom. [image: 1786871362148-img_4133.jpeg]
  • Hilfe für Skripterstellung mit Node-RED

    964 13k
    964 Themen
    13k Beiträge
    A
    @OliverIO Danke für die Analyse und der grundsätzlichen Bestätigung, dass es eigentlich richtig ist und auch funktionieren sollte. Unterdessen ist es so, dass ich den wiederholzykluss auf 20min gestellt habe und zwischen jeder Anfrage 1 Minute warte. Zusätzlich habe ich ja die udev-Regel entfernt und das Portweiterleiten mit den Proxmox eigenen Mitteln gemacht. Es läuft nun seit 25h so, und Fehler mit keinem String ist noch 2x aufgetreten, hat sich unterdessen aber sogar selber gefixt und läuft seither ohne erkennbar Fehlermeldungen durch. Weil es ja so merkwürdig reagiert hat, habe ich den Pylontechadapter nochmals installiert und die neue Schnittstelle eingerichtet. Nach sehr langem warten wurde der Adapter sogar grün und er hat tatsächlich die BMS Infos rausgelesen, aber die Zelleninfos kamm nicht. Ich habe zwar keine Ahnung wie das Pytes BMS Tool das wirklich macht, aber ich habe den Eindruck, dass der Abfragezyklus nicht mehr als 1x pro Minute gestartet werden darf. Das Pytes Tool bringt alle infis eigentlich recht schnell. Bei meinem 12V System mit den DALI ist es so beschrieben, dass man nur 1x pro Minute Abfragen, kann weil der Prozessor sonst seine Aufgabe nicht machen kann. Aktuell läuft es und ich beobachte das sehr intensiv, weil ich der Sache noch nicht ganz traue.
  • Widget schaltet HTTP GET Befehl

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    2k Aufrufe
    BluefoxB
    @akamia: Geht. Setze ich zur direkten Steuerung meines DENON Verstärkers ein. Z.B.: http://192.168.xxx.yyy/goform/formiPhon … ?1+MuteOff Widget: jqui - Icon Http Get Die 433 MHz billig Funksteckdosen hatte ich auch über das Mediola Gateway gesteuert. ` Es sit empfohlen die Skriptversion zu nutzen, weil Widget Lösung funktioniert nur von zuhause. Falls man unterwegs ist, landen die HTTP Befehle in Nirvana. Und dann noch, falls man HTTPS einschaltet, kann man die Requests auch nicht machen, weil die Browser weigern von HTTPS auf HTTP zu greifen. Falls man von Zuhause und nur über HTTP vis laufen lässt, dann kann man die widgets auch benutzen.
  • [gelöst] Reaktion auf Kalendereintrag

    Verschoben
    13
    0 Stimmen
    13 Beiträge
    3k Aufrufe
    S
    Merci, Ich schaue morgen mal und werde berichten…danke!
  • Node-Red Deployment Probleme *** Gelöst ***

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    6k Aufrufe
    T
    Hallo, hab nun die die aktuelle Node-red Version 0.13.2 installiert. Damit sind meine Deployment-Probleme mit "Error: connection to server lost" auch endlich gelöst. cd /opt/iobroker/node_modules/iobroker.node-red iobroker stop node-red.0 npm i --unsafe-perm node-red@0.13.2 iobroker start node-red.0 Es läuft nun alles stabil…. :) :) :)
  • Einschaltdauer

    Verschoben
    6
    1
    0 Stimmen
    6 Beiträge
    2k Aufrufe
    P
    Hey Pix, danke für die Tipps :D Ich bin für jeden Tipp dankbar. Gerade wenn diese einem das Leben langfristig erleichtern. Werde meine Scripte demnächst mal umbauen. Gruß Phantomio
  • [gelöst] String Inhalt durchsuchen

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    2k Aufrufe
    P
    Danke euch beiden für die schnelle Antwort. Mit dem Code von Bluefox funktioniert es :) Hier noch einmal die Funktion falls es mal jemand brauchen kann. Soll die letzte Sprachausgabe wiedergeben :lol: ! function fSprachausgabeWiederholen (){ lastsay = getState("sayit.0.tts.text").val; if (lastsay.indexOf("Nerv") != -1){ // Nerv kommt vor }else{ if (lastsay.indexOf("Gut") != -1){ setState (idSayIt, "Nerv mich nicht. Ich habe mich bereits wiederholt. "); }else{ if (lastsay.indexOf("Ich") != -1){ setState (idSayIt, "Gut zuhören. Ich wiederhole mich nur noch einmal. " + lastsay); }else{ setState (idSayIt, "Ich habe gesagt: " + lastsay); } } } setStateDelayed ("javascript.0.SprachausgabeWiederholen", true, 14000); } ! Gruß Phantomio
  • [fixed] on ID - Ausführung doppelt ?

    Verschoben
    9
    0 Stimmen
    9 Beiträge
    3k Aufrufe
    P
    Da ich diese globale Funktion auch für andere Sachen benutze, und diese nur eine e-Mail senden würde ich das erst mal ausschließen. Die globale Funktion ist genau wie die Mail Funktion aufgebaut. Liegt halt nur in einem Globalen Script.
  • Per Skript widget ausführen

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    3k Aufrufe
    BluefoxB
    @Konni: Jetzt bin ich es schon wieder, wenn ich es in mein vorhandenes Script einbaue, öffnet sich zwar der Dialog, schließt sich aber nicht mehr :( /* Bewegung zaehlen und in VIS anzeigen für hofi77 http://forum.iobroker.net/viewtopic.php?f=21&t=1703#p14520 Bitte anpassen mit eigener Seriennummer erstellt: 14.11.2015 von Pix */ var idSayIt2 = "sayit.2.tts.text"; var vol2 ="sayit.2.tts.volume"; createState('VIS.Klingel_zeigen', false, { read: true, write: true, type: 'boolean', name: 'Klingel im VIS Widget anzeigen', desc: 'Steuervariable für VIS Widget Sichtbarkeit' }); createState('VIS.Klingel_zaehlen', 0, { read: true, write: true, type: 'number', name: 'Klingel zählen', desc: 'Counter für Klingeln' }); var idKlingelsensor = "hm-rpc.0.MEQ0657356.1.PRESS_SHORT"/*HM-Sen-DB-PCB MEQ0657356:1.PRESS_SHORT*/, idCountKlingel = 'VIS.Klingel_zaehlen', idShowKlingel = 'VIS.Klingel_zeigen'; on({ id: idKlingelsensor, val: true }, function (obj) { var counter = getState(idCountKlingel).val; // bisherige Zahl aus Variable einlesen setState(idCountKlingel, ++counter); // eins hochzählen setState (vol2,99); setState (idSayIt2, "Es klingelt oben"); setState("vis.0.control.data", 'w00104'); // hier ist Widget-name setState("vis.0.control.instance", 'FFFFFFFF'); setState("vis.0.control.command", 'dialogOpen'); setStateDelayed("vis.0.control.command", 'dialogClose', 5000); //setState(idShowKlingel, true); // Steuerung VIS-Widget Sichtrbarkeit auf wahr //setStateDelayed(idShowKlingel, false, 5000); // nach 10.000 ms wieder ausblenden }); // Mitternacht Zähler zurücksetzen schedule('0 * * * *', function () { setState(idCountKlingel, 0); }); ```` ` Dann mach beim schlissen das gleiche: setStateDelayed("vis.0.control.command", {instance: 'FFFFFFFF', data: 'w00104', command: 'dialogOpen'}, 5000);
  • Scriptstart bei Aufruf einer URL

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    6k Aufrufe
    M
    Super, klappt einwandfrei. Danke
  • Hue Lampe nach Farbänderung wieder zurück setzen

    Verschoben
    5
    0 Stimmen
    5 Beiträge
    1k Aufrufe
    coyoteC
    Funktioniert, danke dir. Bin noch nicht so firm im scripten ;) 10064_shepherd.db.txt
  • Verallgemeinerung zur Weiterverwendung

    Verschoben
    17
    0 Stimmen
    17 Beiträge
    2k Aufrufe
    K
    Ich habe ja versprochen mein Ergebnis hier bereitzustellen. Den Countdown habe ich von Bluefox übernommen und an meine Bedürfnisse angepasst. Vielen Dank an Bluefox. /* Enthaltene Funktionen: */ /* CountDown(objekt) Stellt einen CountDown zur Verfügung und schreibt die Werte nach objekt */ /* CountDown1(sekunden,objekt) Wie CountDown als Alternativlösung */ /* Rechnersysteme direkt hoch und herunterfahren */ /* -------------------------------------------------------------------------------------------------- */ function CountDown (objekt) { function count() { setTimeout(function () { var timer = getState(objekt).val; if (timer > 1) { timer=timer-1; if (getState(objekt).val != 0) {setState(objekt, timer)}; count(); } else { setState(objekt, 0); } }, 1000); } count(); } /* -------------------------------------------------------------------------------------------------- */ Im zweiten Teil steuere ich drei Rechnersysteme. Dies kann um weitere Systeme erweitert werden, indem in der Markierung 1 weitere Rechnernamen eingetragen werden und die on-Statements jweils kopiert und hinten angehängt werden. Die Variable i muss jeweils zweimal um eins erhöht werden. Bei Markierung 3 können die eigenen Befehle eingetragen werden, die nach Ablauf des Sleeptimers ausgeführt werden sollen. Wenn jemanden noch Verbesserungen oder Optimierungen auffallen, dann gerne kommentieren. /* –------------------------------------------------------------------------------------------------ */ `var idSayIt = "sayit.0.tts.text"; var hosts = [ "Sonne", "Nuc","Galaxy"]; //MARKIERUNG 1 var anzahl_hosts = hosts.length; var timeout = new Array(anzahl_hosts); for (i=1;i<anzahl_hosts;i++) 0/1/3/60/{/createstate/(hosts[i]+'.sleeptimer',-1);/(hosts[i]+'.sleeptimer_dauer',15);/(hosts[i]+'.countdown',900);/(hosts[i]+'.shutdown_befehl','wget/-o/dev/null/http:/192.168.2.25/remote_'+hosts[i]/+/'_shutdown.php');/(hosts[i]+'.wol_befehl','wget/'_wol.php');/(hosts[i]+'.aktivieren',0);/}/function/start_sleeptimer(host)/setstate/(idsayit,/"sleeptimer/"/host/aktiviert/getstate("javascript.0."+host/".sleeptimer_dauer").val/minuten")/;/setstate("javascript.0."/".countdown",/*/);/countdown("javascript.0."+host/".countdown");/mytimeout="setTimeout(function" ()/timer/ist/abgelaufen")/markierung/".sleeptimer",/-1);/wert/wieder/zurücksetzen/},/getstate("javascript.0."+host+".sleeptimer_dauer").val/1000*60);/return(mytimeout)/stop_sleeptimer/(host,mytimeout)/"+host+"/gestoppt")/cleartimeout(mytimeout);/setstate("javascript.0."+host+".sleeptimer",/setstate("javascript.0."+host+".countdown",/0);/------------------------------------------------------------------------------------------------------/dies/der/auslöser/für/die/aktivierung/des/sleeptimers/wenn/sleeptimer/auf/gesetzt/wird,/wird/ein/countdown/ausgelöst/und/nach/ablauf/aktion/ausgeführt/während/aktiven/countdowns/agbebrochen/beiden/aktinen/sleelptimer/selbst/-1/gesetzt./i="0;" on("javascript.0."+hosts[i]+".sleeptimer",/function(obj)/if/(obj.newstate.val="==" 1)/timeout[i]="start_Sleeptimer(hosts[i]);" else/0)/stop_sleeptimer(hosts[i],timeout[i]);/nichts/tun/});/<e=""></anzahl_hosts;i++)>`[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
  • Ölverbrauch berechnen?

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    1k Aufrufe
    L
    Hi Thomas, die werden in ioBroker gespeichert. Die Datenpunkte aus der CCU stehen aber zur Verfügung und können als Trigger eingetragen werden. Die Anzahl der verwendeten Datenpunkte hängt von den Einstellungen ab, z.B. mit Historie oder ohne, mit Tages, Wochen, Monats, Jahreskumulation oder ohne etc. Bisher ist es als Betriebszeitenscript veröffentlicht, allerdings habe ich das Script komplett umgeschrieben und erweitert. Damit sind Verbrauchdarstellungen möglich, auch bewertete Verbräuche, Umrechnungen anderer Art etc. link zum Beitrag: http://forum.iobroker.com/viewtopic.php?f=21&t=2175 aber wie gesagt. Diese Version enthält noch nicht die neuen Funktionen. Ich schicke dir mal die letzte Version via PN. Mal zum schauen. vG
  • Variable Zeitsteuerung

    Verschoben
    11
    0 Stimmen
    11 Beiträge
    3k Aufrufe
    B
    @pix: Hallo, auch mal hier im Forum nach 'unsubscribe'. Bin unterwegs und finde den Link gerade nicht. Gruß, Pix Gesendet mit Tapatalk ` Gefunden, gleiche Frage und das obwohl ich gesucht hatte :ugeek: .
  • Selektor ODER Verknüpfung

    Verschoben
    4
    0 Stimmen
    4 Beiträge
    924 Aufrufe
    P
    Hallo, es hat funktioniert.: http://forum.iobroker.com/viewtopic.php … 076#p19603 lediglich das "^" habe ich weggelassen. Gruß Pix
  • [gelöst] On id bezogen auf mehrere ID´s möglich

    Verschoben
    3
    0 Stimmen
    3 Beiträge
    973 Aufrufe
    B
    Super funzt. Musste noch dahinter steigen, dass nicht alle Aktoren mit LEQ beginnen :), aber das war eine kleine Anpassung. Danke.
  • Per Python den Zustand von Datenpunkten ändern

    Verschoben
    1
    0 Stimmen
    1 Beiträge
    931 Aufrufe
    Niemand hat geantwortet
  • HUE Motion

    Verschoben
    7
    0 Stimmen
    7 Beiträge
    2k Aufrufe
    I
    Danke geht!
  • Probleme mit Skript Licht an nach Erkennung Bewegung

    Verschoben
    2
    0 Stimmen
    2 Beiträge
    883 Aufrufe
    P
    Hallo Freddy, dein Subscribe ist die Kurzschreibweise. Lang geschrieben ist das das gleiche: on({id: 'hm-rpc.0.KEQ0236715.1.MOTION', change: 'ne' }, function (obj) { Das bedeutet erstmal, dass das Skript nur gestartet wird, wenn der Wert sich ändert. Weiter unten fragst du dann ab, ob der neue Wert true ist (also nach einer Änderung, d.h. er muss vorher false sein). Bei den Variablen helligkeit und bewegung fehlt noch das .val. Probier mal so: on({id: 'hm-rpc.0.KEQ0236715.1.MOTION', change: 'any' }, function (obj) { // Bewegung überwachen var bewegung = getState('hm-rpc.0.KEQ0236715.1.MOTION').val; // hier aber auch obj.newState.val var helligkeit = getState('hm-rpc.0.KEQ0236715.1.BRIGHTNESS').val; if (obj.newState.val === true) { // Bewegung true log("---> Licht - Gallerie - ausgelöst durch Bewegungsmelder............","info") if (helligkeit < 50) { // Helligkeitsgrenzwert bei Bedarf ändern setState("hm-rpc.0.KEQ0801517.1.ON_TIME"/*LED Galerie ein - aus.ON_TIME*/, 600); // 600s Einschaltdauer setState("hm-rpc.0.KEQ0801517.1.STATE"/*LED Galerie ein - aus.STATE*/, true); // schalte Lampe an log("---> Licht - Gallerie an für 600 Sekunden............" ,"info"); } else { log("---> Licht - Licht zu hell um anzuschalten da Helligkeit: " + helligkeit + " %" ,"info"); // Helligkeitswert vom Melder sind keine Prozent } } }); Gruß Pix
  • Zuviel fuer JS ?

    Verschoben
    32
    0 Stimmen
    32 Beiträge
    3k Aufrufe
    L
    aaah- jetzt hab ichs verstanden. oh mann. Danke dir
  • Rolladen Zeitverzögert ansteuern

    Verschoben
    18
    1
    0 Stimmen
    18 Beiträge
    3k Aufrufe
    wendy2702W
    Hi, ich habe mich mal an das bereits in diesem Thema enthaltene Script gewagt. Damit ich irgendwann mal verstehe wie das alles funktioniert mal ein paar fragen: wenn ich das Script so erstelle wie angegeben, muss ich doch zusätzlich in der CCU sagen das bei z.B. Druck der Taste "hm-rpc.0.BidCoS-RF.12.PRESS_SHORT" die Rolladen aktoren auf 0% (zu) fahren, oder mache ich das auch in iobroker? Das wiederhole ich für alle drei Tasten, korrekt? Sieht bei mir z.B. so aus: [image: 999_jalousie_og_alle_ccu.jpg] Wenn ich z.B. diese Taste nehmen würde: "hm-rpc.0.BidCoS-RF.15.PRESS_SHORT" würde der Rolladen 2000ms später fahren, richtig? Das Programm habe ich erstmal 1 zu 1 in iobroker importiert und gestartet. Danach ist mein Status so: [image: 999_jalousie_og_alle.jpg] Ich habe mir zum Testen zwei einfache Widgets erstellt und die jeweils mit der virtuellen Taste für rauf bzw. runter belegt. Das scheint zu klappen. Wie funktioniert jetzt die Umschaltung zwischen Auto/Hand ? Ein Auto Script habe ich zwar noch nicht aber was muss ich machen um wählen zu können? Ich kann mit einen weiteren Widget den Status für "Hand_Auto" zwischen "true und false" wechseln, allerdings kann ich egal was da steht immer meine beiden anderen Widgets zum fahren benutzen. Danke für eure Hilfe
  • Iobroker Unterschied zwischen value und object

    Verschoben
    13
    0 Stimmen
    13 Beiträge
    5k Aufrufe
    G
    Genau das war es Danke :D

280

Online

33.0k

Benutzer

83.6k

Themen

1.3m

Beiträge