Skip to content

Skripten / Logik

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

16.6k Topics 214.0k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Topics
    49k Posts
    crunchipC
    @Rushmed sagte in ioBroker Prozess- & Gesundheitsmonitor + Grafana Dashboard: Sonmal gesehen? nein, weil bei mir die Historie schon befüllt war, hatte da gestern einen Fehler eingebaut, habs soeben korrigiert und im ersten Beitrag eingestellt, bitte testen edit: habs grad nochmal durchgesehen, da sind noch noch ein paar Erststart-Risiken bei uninitialisierten In-Memory-Objekten., die ich bei der gestrigen Änderung nicht bedacht hatte, bzw nicht mehr testen wollte, da ich sonst alle Datenpunkte wieder per Hand für Influxdb aktivieren hätte müssen. Werd ich morgen noch nachbessern.
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Topics
    80k Posts
    Murphy 0M
    @berny-k im Debug bitte mal MessstelleBezug den Wert in der Ausgabe * -1 rechnen. Dann morgen wenn die Sonne scheint nochmal ausdrucken. -279 - +20 + LeistungvomStromnetz (z.B. 880) ergibt Input -279 - +20 = -259 -259 + 880 = 621 Input
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Topics
    13k Posts
    Marc BergM
    Es gibt in der Verson 1.3.0 einen neuen Node: iob-setObject (Stand 10.02.26 noch beta) Mit dem neuen Node kann man ioBroker-Objektdefinitionen (Metadaten) direkt schreiben und ändern. Hauptfunktionen: Instanz-Konfigurationen ändern - z.B. MQTT publish-Pattern, Intervalle, etc. Objekt-Eigenschaften aktualisieren - Namen, Rollen, Einheiten, Min/Max-Werte ändern es gibt zwei Modi: Merge-Modus : Ändert nur die angegebenen Eigenschaften, alle anderen bleiben erhalten Replace-Modus: Überschreibt das komplette Objekt Typischer Workflow: Objekt mit iob-getobject holen Mit Change-Node gewünschte Properties ändern Mit iob-setobject zurückschreiben
  • [gelöst] Prüfen, ob ein State existiert

    Moved
    11
    0 Votes
    11 Posts
    3k Views
    ScroungerS
    Wenn der state existiert aber keinen Wert hat wird trotzdem eine warn ins log geschrieben. Lösung ist existsState zu verwenden, da bekommt dann auch false zurück wenn kein Wert vorhanden ist, siehe: https://forum.iobroker.net/topic/23548/getstate-warning-log-js-dokumentation/10 Musste ich hier noch dokumentieren ;)
  • Time Of Day - Design Pattern

    template javascript
    2
    2
    3 Votes
    2 Posts
    1k Views
    ?
    @Tirador Vielen Dank für das tolle Skript, dass diverse Zeiten einfach über einen DP verfügbar macht :)
  • Befehl Komandozeile als Script

    communication
    2
    0 Votes
    2 Posts
    265 Views
    H
    Ich habe es schon selber hinbekommen. Für meinen Anwendungsfall sieht das dan so aus: var schreibeVorlauf; schreibeVorlauf = "ebusctl -s localhost w -c bai SetModeOverride '2;" + getState("hm-rega.0.3298").val +";-;-;0;0;0;0;0;0'" ; console.log(schreibeVorlauf); console.log(getState("hm-rega.0.3298").val); exec(schreibeVorlauf);
  • Auslesen von Daten einer Webseite

    monitoring
    8
    0 Votes
    8 Posts
    627 Views
    HomoranH
    @floet sagte in Auslesen von Daten einer Webseite: ch möchte allerdings auch "mittel" und "spitze" haben. Mit Num geht es jedenfalls nicht. Das stimmt, da muss dann ein anderes RegEx rein. Mache ich dir heute abend EDIT: ind[^\d\-]+(\-?\d+\.?\d+)\s\/\s(\-?\d+\.?\d+)\s\/\s(\-?\d+\.?\d+) für die drei Windgeschwindigkeiten (Num0-2)
  • Skript für DarkSky Wetterdaten

    javascript climate
    11
    1 Votes
    11 Posts
    2k Views
    J
    Hallo, deute ich das hier richtig: schedule("*/5 * * * *", function (data) { das die 5 bedeutet alle 5 Minuten werden die aktuellen Daten geholt? Weil ich mich gewundert habe in der Darksky API, das da schon über 200 Aufrufe waren, wobei das Script erst ein paar Stunden lief. Kann man hier einen kleineren Intervall einstellen? So oft muss das ja nicht sein die Daten abzurufen, auch wenn 1000 Aufrufe kostenfrei sind. Grüße JB
  • Liste aller CRON Jobs

    Moved
    8
    0 Votes
    8 Posts
    4k Views
    T
    @Blackbat72 gibt noch keine Funktion in Javascript-Adapter dafür. Adapter Code in dem die Funktionen definiert sind
  • Staubsauger bei Abwesenheit 1xReinigen

    blockly
    6
    1
    0 Votes
    6 Posts
    577 Views
    L
    @paul53 Funktioniert nicht. Musste das script abändern da mein Anwesenheit Datenpunkt bei niemand zuhause falsch ist, siehe unten. Funktioniert aber nicht. [image: 1582362713335-staubsauger.png]
  • Bewegungsmelder temporär deaktivieren

    javascript blockly
    4
    1
    0 Votes
    4 Posts
    403 Views
    T
    @Berchemer In allen von dir genannten Fällen sind die Variablen leer/undefiniert. Vorteil von Variablen ist, das sie effizienter als States sind.
  • 0 Votes
    2 Posts
    444 Views
    HomoranH
    @Bostil sagte in Logik-Programmierung abseits von Blockly / Szenen möglich ?: einen anderen schönen Adapter, der "falls ... wenn" Blöcke einfacher & flexibel programmieren lassen kann ? einfacher als in Blockly geht es doch wirklich nicht. Was ist denn dir da zu kompliziert? [image: 1582234078531-blockly_pure.png] Die States sind willkürlich und müssen natürlich aus deinen ausgewählt werden @Bostil sagte in Logik-Programmierung abseits von Blockly / Szenen möglich ?: aber die Optionen in den Szenen sind mir wirklich nicht eindeutig das wird aber einfacher wenn du Szenen nur in "eine Richtung" nutzst. Den Haken bei setze Sollwert für falsch einfach weg lässt. Eventuell liegt es auch an deinen States.
  • Blockly Timeout in Schleife

    blockly
    3
    1
    0 Votes
    3 Posts
    807 Views
    C
    @dslraser Ok, super. Danke dass hat mir schon geholfen :) Es ging um eine einfache LED-Lampe, welche mit eigener Infrarot Fernbedienung kommt, und ich über den Harmony Hub ansteuere. Heller und Dunkler sind hier einfach jedes mal ein Tastendruck und ich wollte von einem "Normalen Dimmer" (0-100%) die entsprechende Anzahl der Tastendrücke senden. Aber mit dem Intervall klappt es. Danke!
  • IRobot Roomba Steuerung

    Moved
    19
    0 Votes
    19 Posts
    4k Views
    smarthomegirlS
    @eric2905 sagte in IRobot Roomba Steuerung: Am node-red-Flow für die Statusinfos habe ich noch was angepasst - die Uhrzeit der Statusabfrage wird nun auch in einen Datenpunkt geschrieben und im Widget mit angezeigt. So sieht man immer, wie alt der angezeigte Status ist. Hier der überarbeitete Flow "Roomba Status" (ist auch im Posting oben angepasst): [{"id":"a5a2adf.f5a5d5","type":"inject","name":"Full Status jede 1 Minute","topic":"","payload":"","payloadType":"date","repeat":"60","crontab":"","once":true,"x":180,"y":62,"z":"7859072e.87a6f8","wires":[["504181f6.afbe8","182e191.fe7d1e7"]]},{"id":"504181f6.afbe8","type":"http request","name":"Roomba command","method":"GET","ret":"txt","url":"http://192.168.178.55/full_status.xml","x":408,"y":63,"z":"7859072e.87a6f8","wires":[["b7123aff.48edc8","3050ead5.cfaf16","6c22b045.93dd5","c8c15059.373eb","205772fb.dfa88e","bee92f3c.4116d","f8aef704.075108","a899536.f5766b","666e081d.9991f8"]]},{"id":"b7123aff.48edc8","type":"function","name":"Name auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<name>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":658,"y":63,"z":"7859072e.87a6f8","wires":[["5f503576.a0afcc"]]},{"id":"5f503576.a0afcc","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.name","ack":"false","autoCreate":"true","x":990,"y":64,"z":"7859072e.87a6f8","wires":[]},{"id":"3050ead5.cfaf16","type":"function","name":"Strecke auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaning_distance>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":664,"y":133,"z":"7859072e.87a6f8","wires":[["b475f945.4b8a08"]]},{"id":"b475f945.4b8a08","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.strecke","ack":"false","autoCreate":"true","x":996,"y":134,"z":"7859072e.87a6f8","wires":[]},{"id":"6c22b045.93dd5","type":"function","name":"Schmutzbehälter auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<bin_status>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":693,"y":191,"z":"7859072e.87a6f8","wires":[["11db5550.ee24ab"]]},{"id":"11db5550.ee24ab","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.schmutzbehaelter","ack":"false","autoCreate":"true","x":1029,"y":193,"z":"7859072e.87a6f8","wires":[]},{"id":"c8c15059.373eb","type":"function","name":"Akkuladung auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<battery_charge>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":666,"y":259,"z":"7859072e.87a6f8","wires":[["8c8c5798.7373a8"]]},{"id":"8c8c5798.7373a8","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkuladung","ack":"false","autoCreate":"true","x":1030,"y":260,"z":"7859072e.87a6f8","wires":[]},{"id":"205772fb.dfa88e","type":"function","name":"Akkukapazität (Soll) auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<capacity>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":688,"y":319,"z":"7859072e.87a6f8","wires":[["5c1179c1.a3ee88"]]},{"id":"5c1179c1.a3ee88","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkusoll","ack":"false","autoCreate":"true","x":1036,"y":319,"z":"7859072e.87a6f8","wires":[]},{"id":"bee92f3c.4116d","type":"function","name":"Akkukapazität (Ist) auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<charge>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":690,"y":378,"z":"7859072e.87a6f8","wires":[["334dc150.ccb23e"]]},{"id":"334dc150.ccb23e","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.akkuist","ack":"false","autoCreate":"true","x":1026,"y":380,"z":"7859072e.87a6f8","wires":[]},{"id":"f8aef704.075108","type":"function","name":"Temperatur auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<temperature>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":692,"y":436,"z":"7859072e.87a6f8","wires":[["2712b369.d8ed4c"]]},{"id":"2712b369.d8ed4c","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.temperatur","ack":"false","autoCreate":"true","x":1028,"y":438,"z":"7859072e.87a6f8","wires":[]},{"id":"a899536.f5766b","type":"function","name":"Status auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaner_state>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\n\nif (daten == \"st_base\"){\n daten = \"Auf Basis, nicht ladend\";\n}\n\nif (daten == \"st_base_recon\"){\n daten = \"Auf Basis, Auffrischungsladung\";\n}\n\nif (daten == \"st_base_full\"){\n daten = \"Auf Basis, normal aufladend\";\n}\n\nif (daten == \"st_base_trickle\"){\n daten = \"Auf Basis, Erhaltungsladung\";\n}\n\nif (daten == \"st_base_wait\"){\n daten = \"Auf Basis, wartend\";\n}\n\nif (daten == \"st_plug\"){\n daten = \"Eingesteckt, nicht ladend\";\n}\n\nif (daten == \"st_plug_recon\"){\n daten = \"Eingesteckt, Auffrischungsladung\";\n}\n\nif (daten == \"st_plug_full\"){\n daten = \"Eingesteckt, normal aufladend\";\n}\n\nif (daten == \"st_plug_trickle\"){\n daten = \"Eingesteckt, Erhaltungsladung\";\n}\n\nif (daten == \"st_plug_wait\"){\n daten = \"Eingesteckt, wartend\";\n}\n\nif (daten == \"st_stopped\"){\n daten = \"Angehalten\";\n}\n\nif (daten == \"st_clean\"){\n daten = \"Reinigung läuft\";\n}\n\nif (daten == \"st_cleanstop\"){\n daten = \"Reinigung gestoppt\";\n}\n\nif (daten == \"st_clean_spot\"){\n daten = \"Spot-Reinigung\";\n}\n\nif (daten == \"st_clean_max\"){\n daten = \"Max-Reinigung\";\n}\n\nif (daten == \"st_delayed\"){\n daten = \"Reinigung verzögert, startet gleich\";\n}\n\nif (daten == \"st_dock\"){\n daten = \"Suche Basis\";\n}\n\nif (daten == \"st_pickup\"){\n daten = \"Roomba hochgehoben\";\n}\n\nif (daten == \"st_remote\"){\n daten = \"Ferngesteuertes fahren\";\n}\n\nif (daten == \"st_wait\"){\n daten = \"Warte auf Befehle\";\n}\n\nif (daten == \"st_off\"){\n daten = \"Aus\";\n}\n\nif (daten == \"st_error\"){\n daten = \"Fehler\";\n}\n\nif (daten == \"st_locate\"){\n daten = \"Finde mich\";\n}\n\nif (daten == \"st_unknown\"){\n daten = \"Status unbekannt\";\n}\n\n\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":692,"y":497,"z":"7859072e.87a6f8","wires":[["f6e00de3.091ff"]]},{"id":"f6e00de3.091ff","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.status","ack":"false","autoCreate":"true","x":1028,"y":499,"z":"7859072e.87a6f8","wires":[]},{"id":"666e081d.9991f8","type":"function","name":"Saugt gerade auswerten","func":"var quelle = msg.payload;\n\nmsg1 = {};\n\nsuche = \"<cleaning>\";\nsuche_laenge = (suche && suche.length);\n\n// Suchwort \"suche\" finden \n// var daten_startpos = quelle.indexOf('cleaning_distance');\nvar daten_startpos = quelle.indexOf(suche);\nvar daten = quelle.substr(daten_startpos + suche_laenge, 50);\n\n// Finde \"<\" und merke dir die Position. Schneide aus von 0 bis Position\nvar daten_endpos = daten.indexOf('<');\ndaten = daten.substring(0, daten_endpos);\nmsg1.payload = daten; // String\n\nreturn [msg1];","outputs":"1","noerr":0,"x":706,"y":556,"z":"7859072e.87a6f8","wires":[["c7157fc8.38ea8"]]},{"id":"c7157fc8.38ea8","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.saugt","ack":"false","autoCreate":"true","x":1042,"y":558,"z":"7859072e.87a6f8","wires":[]},{"id":"182e191.fe7d1e7","type":"function","name":"Status-Uhrzeit ermitteln","func":"msg = {};\n\n\nfunction addZero(i) {\n if (i < 10) {\n i = \"0\" + i;\n }\n return i;\n}\n\n\nvar currentdate = new Date(); \nvar h = addZero(currentdate.getHours());\nvar m = addZero(currentdate.getMinutes());\nvar s = addZero(currentdate.getSeconds());\n\n\nvar datetime = h + \":\" + m + \":\" + s;\n\nmsg.payload = datetime;\nreturn msg;\n","outputs":1,"noerr":0,"x":701,"y":631,"z":"7859072e.87a6f8","wires":[["57efa4f2.a8105c"]]},{"id":"57efa4f2.a8105c","type":"ioBroker out","name":"","topic":"node-red.0.Roomba.Statusuhrzeit","ack":"false","autoCreate":"true","x":1044,"y":636,"z":"7859072e.87a6f8","wires":[]}]</cleaning></cleaner_state></temperature></charge></capacity></battery_charge></bin_status></cleaning_distance></name> Viel Spaß damit :-) Gruß, Eric Hallo @eric2905, beim Importieren des Roomba Status Flows in NodeRed kommt bei mir folgende Fehlermeldung: [image: 1582398518715-479f8357-59e7-432e-b560-48b3598a1392-image.png] Was mache ich da falsch? Wo liegt der Fehler? EDIT: Es darf </cleaning></cleaner_state></temperature></charge></capacity></battery_charge></bin_status></cleaning_distance></name> nicht enthalten sein. Ein Problem habe ich aber trotzdem noch. Ich habe wie beschrieben unter "Roomba command" meine IP Adresse des Saugroboters eingetragen, aber nach dem Deployen bekommt Node Red keine Verbindung. (siehe Bild) So wie es aussieht ist diese Verbindung nicht möglich. [image: 1582403061791-b071a54d-df05-4b8e-acfc-dd74115bef9f-image.png] Der Aufruf dieses Links http://192.168.178.253/full_status.xml ist nicht möglich. [image: 1582404315368-d5db8c82-88f5-47ce-a043-5aeab60e4d13-image.png] Im Log steht folgende Fehlermeldung: Spoiler node-red.0 2020-02-22 21:45:41.561 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:45:41.561 error (2903) 22 Feb 21:45:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:44:41.552 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:44:41.552 error (2903) 22 Feb 21:44:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:43:41.581 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:43:41.581 error (2903) 22 Feb 21:43:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:42:41.561 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:42:41.561 error (2903) 22 Feb 21:42:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:41.576 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:41.576 error (2903) 22 Feb 21:41:41 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:12.308 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:12.308 error (2903) 22 Feb 21:41:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:41:12.138 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:41:12.138 error (2903) 22 Feb 21:41:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:40:12.307 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:40:12.307 error (2903) 22 Feb 21:40:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:40:12.160 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:40:12.160 error (2903) 22 Feb 21:40:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:39:12.353 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:39:12.353 error (2903) 22 Feb 21:39:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 node-red.0 2020-02-22 21:39:12.324 error at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1107:14) node-red.0 2020-02-22 21:39:12.324 error (2903) 22 Feb 21:39:12 - [error] [http request:Roomba command] Error: connect ECONNREFUSED 192.168.178.253:80 Was ist da falsch? Was muss ich da machen?
  • Objekte in Schleife füllen

    blockly
    3
    0 Votes
    3 Posts
    297 Views
    Markus K.M
    Ok. Ich habe in einem Datenpunkt einen Farbwert. Jetzt habe ich es so gelöst, wenn ich in VIS den Knopf: Speicher1 drücke, wird der Wert in den Datenpunkt Speicher1 übernommen. Knopf zwei entprechend Speicher2, usw. Kann ich mit Blockly auch, einen Wert n jeweils erhöhen und dann meine Farbe in Speicher(n) ablegen ? Und umgekehrt dann halt eine Schleife die durchzählt, und den wert Speicher1 , Speicher2 ... Speicher(n) nacheinander wieder abruft ?
  • Licht an so lange Bewegung

    blockly
    49
    1
    0 Votes
    49 Posts
    6k Views
    T
    Ist alles im Beispiel von dslraser enthalten.
  • mehrere unterschiedliche trigger auf ein Script?

    javascript blockly
    15
    1
    0 Votes
    15 Posts
    710 Views
    dslraserD
    @chrbo80 Ich erstelle Datenpunkte mit einen Script von Mic. Wenn Du in die Funktion rein klickst, dann kannst Du ab Zeile 116 den Datenpunkt ändern. So würde der DP jetzt angelegt ['Alexa.Button.Licht_dimmen', {'name': 'Licht Dimmen','type': 'boolean', 'read': true, 'write': true, 'role': 'button','def':false, "smartName": {"de": "Esstischlampe Dimmer","smartType": "SWITCH"} }], Da </> drauf klicken zum änder ab Zeile 116 [image: 1581882234721-bildschirmfoto-2020-02-16-um-20.43.12.png] Der SmartName ist da auch drinn und wird dann automatisch so wie im Script angegeben in iot eingefügt. Du mußt nur einmal anschließend iot öffnen und schauen ob der DP da ist und dann einmal über den Sprachbefehl: Alexa, suche neue Geräte diesen neuen DP suchen lassen. Anschließend kannst Du den als zweiten Trigger in Dein Blockly von oben einfügen. Dann sollte, wenn Du den so wie hier angegeben verwenden würdest, mit: Alexa, Esstischlampe Dimmer an, das Blockly ausgeführt werden. Blockly Export <xml xmlns="http://www.w3.org/1999/xhtml"> <block type="procedures_defcustomnoreturn" id="Q6*2#9#;FNeNnQsQ=FO*" x="12" y="63"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkte_anlegen</field> <field name="SCRIPT">LyoqCiAqIENyZWF0ZSBzdGF0ZXMgdW5kZXIgMF91c2VyZGF0YS4wIG9yIGphdmFzY3JpcHQueAogKiBDdXJyZW50IFZlcnNpb246ICAgICBodHRwczovL2dpdGh1Yi5jb20vTWljLU0vaW9icm9rZXIuY3JlYXRlVXNlclN0YXRlcwogKiBTdXBwb3J0OiAgICAgICAgICAgICBodHRwczovL2ZvcnVtLmlvYnJva2VyLm5ldC90b3BpYy8yNjgzOS8KICogQXV0b3I6ICAgICAgICAgICAgICAgTWljIChpb0Jyb2tlcikgfCBNaWMtTSAoZ2l0aHViKQogKiBWZXJzaW9uOiAgICAgICAgICAgICAxLjAgKDE3IEphbnVhcnkgMjAyMCkKICogRXhhbXBsZToKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKICAgICAgICBbJ1Rlc3QuVGVzdDEnLCB7J25hbWUnOidUZXN0IDEnLCAndHlwZSc6J3N0cmluZycsICdyZWFkJzp0cnVlLCAnd3JpdGUnOnRydWUsICdyb2xlJzonaW5mbycsICdkZWYnOidIZWxsbycgfV0sCiAgICAgICAgWydUZXN0LlRlc3QyJywgeyduYW1lJzonVGVzdCAyJywgJ3R5cGUnOidzdHJpbmcnLCAncmVhZCc6dHJ1ZSwgJ3dyaXRlJzp0cnVlLCAncm9sZSc6J2luZm8nLCAnZGVmJzonSGVsbG8nIH1dLAogICAgXTsKICAgIGNyZWF0ZVVzZXJTdGF0ZXMoJzBfdXNlcmRhdGEuMCcsIGZhbHNlLCBzdGF0ZXNUb0NyZWF0ZSk7CiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIFBMRUFTRSBOT1RFOiBQZXIgaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCwgdGhlIHVzZWQgZnVuY3Rpb24gc2V0T2JqZWN0KCkgCiAqICAgICAgICAgICAgICBleGVjdXRlcyB0aGUgY2FsbGJhY2sgUFJJT1IgdG8gY29tcGxldGluZyB0aGUgc3RhdGUgY3JlYXRpb24uIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlci4gCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIEBwYXJhbSB7c3RyaW5nfSB3aGVyZSAgICAgICAgICBXaGVyZSB0byBjcmVhdGUgdGhlIHN0YXRlOiBlLmcuICcwX3VzZXJkYXRhLjAnIG9yICdqYXZhc2NyaXB0LngnLgogKiBAcGFyYW0ge2Jvb2xlYW59IGZvcmNlICAgICAgICAgRm9yY2Ugc3RhdGUgY3JlYXRpb24gKG92ZXJ3cml0ZSksIGlmIHN0YXRlIGlzIGV4aXN0aW5nLgogKiBAcGFyYW0ge2FycmF5fSBzdGF0ZXNUb0NyZWF0ZSAgU3RhdGUocykgdG8gY3JlYXRlLiBzaW5nbGUgYXJyYXkgb3IgYXJyYXkgb2YgYXJyYXlzCiAqIEBwYXJhbSB7b2JqZWN0fSBbY2FsbGJhY2tdICAgICBPcHRpb25hbDogYSBjYWxsYmFjayBmdW5jdGlvbiAtLSBUaGlzIHByb3ZpZGVkIGZ1bmN0aW9uIHdpbGwgYmUgZXhlY3V0ZWQgYWZ0ZXIgYWxsIHN0YXRlcyBhcmUgY3JlYXRlZC4KICovCmZ1bmN0aW9uIGNyZWF0ZVVzZXJTdGF0ZXMod2hlcmUsIGZvcmNlLCBzdGF0ZXNUb0NyZWF0ZSwgY2FsbGJhY2sgPSB1bmRlZmluZWQpIHsKIAogICAgY29uc3QgV0FSTiA9IGZhbHNlOyAvLyBUaHJvd3Mgd2FybmluZyBpbiBsb2csIGlmIHN0YXRlIGlzIGFscmVhZHkgZXhpc3RpbmcgYW5kIGZvcmNlPWZhbHNlLiBEZWZhdWx0IGlzIGZhbHNlLCBzbyBubyB3YXJuaW5nIGluIGxvZywgaWYgc3RhdGUgZXhpc3RzLgogICAgY29uc3QgTE9HX0RFQlVHID0gZmFsc2U7IC8vIFRvIGRlYnVnIHRoaXMgZnVuY3Rpb24sIHNldCB0byB0cnVlCiAgICAvLyBQZXIgaXNzdWUgIzQ3NCAoaHR0cHM6Ly9naXRodWIuY29tL2lvQnJva2VyL2lvQnJva2VyLmphdmFzY3JpcHQvaXNzdWVzLzQ3NCksIHRoZSB1c2VkIGZ1bmN0aW9uIHNldE9iamVjdCgpIGV4ZWN1dGVzIHRoZSBjYWxsYmFjayAKICAgIC8vIGJlZm9yZSB0aGUgc3RhdGUgaXMgYWN0dWFsIGNyZWF0ZWQuIFRoZXJlZm9yZSwgd2UgdXNlIGEgc2V0VGltZW91dCBhbmQgY291bnRlciBhcyBhIHdvcmthcm91bmQuCiAgICAvLyBJbmNyZWFzZSB0aGlzIHRvIDEwMCwgaWYgaXQgaXMgbm90IHdvcmtpbmcuCiAgICBjb25zdCBERUxBWSA9IDUwOyAvLyBEZWxheSBpbiBtaWxsaXNlY29uZHMgKG1zKQoKCiAgICAvLyBWYWxpZGF0ZSAid2hlcmUiCiAgICBpZiAod2hlcmUuZW5kc1dpdGgoJy4nKSkgd2hlcmUgPSB3aGVyZS5zbGljZSgwLCAtMSk7IC8vIFJlbW92ZSB0cmFpbGluZyBkb3QKICAgIGlmICggKHdoZXJlLm1hdGNoKC9eamF2YXNjcmlwdC4oWzAtOV18WzEtOV1bMC05XSkkLykgPT0gbnVsbCkgJiYgKHdoZXJlLm1hdGNoKC9eMF91c2VyZGF0YS4wJC8pID09IG51bGwpICkgewogICAgICAgIGxvZygnVGhpcyBzY3JpcHQgZG9lcyBub3Qgc3VwcG9ydCB0byBjcmVhdGUgc3RhdGVzIHVuZGVyIFsnICsgd2hlcmUgKyAnXScsICdlcnJvcicpOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAvLyBQcmVwYXJlICJzdGF0ZXNUb0NyZWF0ZSIgc2luY2Ugd2UgYWxzbyBhbGxvdyBhIHNpbmdsZSBzdGF0ZSB0byBjcmVhdGUKICAgIGlmKCFBcnJheS5pc0FycmF5KHN0YXRlc1RvQ3JlYXRlWzBdKSkgc3RhdGVzVG9DcmVhdGUgPSBbc3RhdGVzVG9DcmVhdGVdOyAvLyB3cmFwIGludG8gYXJyYXksIGlmIGp1c3Qgb25lIGFycmF5IGFuZCBub3QgaW5zaWRlIGFuIGFycmF5CgogICAgbGV0IG51bVN0YXRlcyA9IHN0YXRlc1RvQ3JlYXRlLmxlbmd0aDsKICAgIGxldCBjb3VudGVyID0gLTE7CiAgICBzdGF0ZXNUb0NyZWF0ZS5mb3JFYWNoKGZ1bmN0aW9uKHBhcmFtKSB7CiAgICAgICAgY291bnRlciArPSAxOwogICAgICAgIGlmIChMT0dfREVCVUcpIGxvZyAoJ1tEZWJ1Z10gQ3VycmVudGx5IHByb2Nlc3NpbmcgZm9sbG93aW5nIHN0YXRlOiBbJyArIHBhcmFtWzBdICsgJ10nKTsKCiAgICAgICAgLy8gQ2xlYW4KICAgICAgICBsZXQgc3RhdGVJZCA9IHBhcmFtWzBdOwogICAgICAgIGlmICghIHN0YXRlSWQuc3RhcnRzV2l0aCh3aGVyZSkpIHN0YXRlSWQgPSB3aGVyZSArICcuJyArIHN0YXRlSWQ7IC8vIGFkZCB3aGVyZSB0byBiZWdpbm5pbmcgb2Ygc3RyaW5nCiAgICAgICAgc3RhdGVJZCA9IHN0YXRlSWQucmVwbGFjZSgvXC4qXC4vZywgJy4nKTsgLy8gcmVwbGFjZSBhbGwgbXVsdGlwbGUgZG90cyBsaWtlICcuLicsICcuLi4nIHdpdGggYSBzaW5nbGUgJy4nCiAgICAgICAgY29uc3QgRlVMTF9TVEFURV9JRCA9IHN0YXRlSWQ7CgogICAgICAgIGlmKCAoJChGVUxMX1NUQVRFX0lEKS5sZW5ndGggPiAwKSAmJiAoZXhpc3RzU3RhdGUoRlVMTF9TVEFURV9JRCkpICkgeyAvLyBXb3JrYXJvdW5kIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vaW9Ccm9rZXIvaW9Ccm9rZXIuamF2YXNjcmlwdC9pc3N1ZXMvNDc4CiAgICAgICAgICAgIC8vIFN0YXRlIGlzIGV4aXN0aW5nLgogICAgICAgICAgICBpZiAoV0FSTiAmJiAhZm9yY2UpIGxvZygnU3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZyBhbmQgd2lsbCBubyBsb25nZXIgYmUgY3JlYXRlZC4nLCAnd2FybicpOwogICAgICAgICAgICBpZiAoIVdBUk4gJiYgTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gU3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ10gaXMgYWxyZWFkeSBleGlzdGluZy4gT3B0aW9uIGZvcmNlICg9b3ZlcndyaXRlKSBpcyBzZXQgdG8gWycgKyBmb3JjZSArICddLicpOwoKICAgICAgICAgICAgaWYoIWZvcmNlKSB7CiAgICAgICAgICAgICAgICAvLyBTdGF0ZSBleGlzdHMgYW5kIHNoYWxsIG5vdCBiZSBvdmVyd3JpdHRlbiBzaW5jZSBmb3JjZT1mYWxzZQogICAgICAgICAgICAgICAgLy8gU28sIHdlIGRvIG5vdCBwcm9jZWVkLgogICAgICAgICAgICAgICAgbnVtU3RhdGVzLS07CiAgICAgICAgICAgICAgICBpZiAobnVtU3RhdGVzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZCEnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7IC8vIGV4ZWN1dGUgaWYgYSBmdW5jdGlvbiB3YXMgcHJvdmlkZWQgdG8gcGFyYW1ldGVyIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBBbiBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB3YXMgcHJvdmlkZWQsIHdoaWNoIHdlIGFyZSBnb2luZyB0byBleGVjdXRlIG5vdy4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGdvIG91dCBhbmQgY29udGludWUgd2l0aCBuZXh0IGVsZW1lbnQgaW4gbG9vcC4KICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzE4NDUyOTIwL2NvbnRpbnVlLWluLWN1cnNvci1mb3JlYWNoCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gLy8gaWYoIWZvcmNlKQogICAgICAgIH0KCiAgICAgICAgLyoqKioqKioqKioqKgogICAgICAgICAqIFN0YXRlIGlzIG5vdCBleGlzdGluZyBvciBmb3JjZSA9IHRydWUsIHNvIHdlIGFyZSBjb250aW51aW5nIHRvIGNyZWF0ZSB0aGUgc3RhdGUgdGhyb3VnaCBzZXRPYmplY3QoKS4KICAgICAgICAgKioqKioqKioqKioqLwogICAgICAgIGxldCBvYmogPSB7fTsKICAgICAgICBvYmoudHlwZSA9ICdzdGF0ZSc7CiAgICAgICAgb2JqLm5hdGl2ZSA9IHt9OwogICAgICAgIG9iai5jb21tb24gPSBwYXJhbVsxXTsKICAgICAgICBzZXRPYmplY3QoRlVMTF9TVEFURV9JRCwgb2JqLCBmdW5jdGlvbiAoZXJyKSB7CiAgICAgICAgICAgIGlmIChlcnIpIHsKICAgICAgICAgICAgICAgIGxvZygnQ2Fubm90IHdyaXRlIG9iamVjdCBmb3Igc3RhdGUgWycgKyBGVUxMX1NUQVRFX0lEICsgJ106ICcgKyBlcnIpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIE5vdyB3ZSBhcmUgY3JlYXRpbmcgbmV3IHN0YXRlIFsnICsgRlVMTF9TVEFURV9JRCArICddJykKICAgICAgICAgICAgICAgIGxldCBpbml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLmRlZiA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1bMV0udHlwZSA9PT0gJ251bWJlcicpIGluaXQgPSAwOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLnR5cGUgPT09ICdib29sZWFuJykgaW5pdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtWzFdLnR5cGUgPT09ICdzdHJpbmcnKSBpbml0ID0gJyc7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGluaXQgPSBwYXJhbVsxXS5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHNldFN0YXRlKEZVTExfU1RBVEVfSUQsIGluaXQsIHRydWUsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoTE9HX0RFQlVHKSBsb2coJ1tEZWJ1Z10gc2V0U3RhdGUgZHVyY2hnZWbDvGhydDogJyArIEZVTExfU1RBVEVfSUQpOwogICAgICAgICAgICAgICAgICAgICAgICBudW1TdGF0ZXMtLTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG51bVN0YXRlcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKExPR19ERUJVRykgbG9nKCdbRGVidWddIEFsbCBzdGF0ZXMgcHJvY2Vzc2VkLicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgeyAvLyBleGVjdXRlIGlmIGEgZnVuY3Rpb24gd2FzIHByb3ZpZGVkIHRvIHBhcmFtZXRlciBjYWxsYmFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChMT0dfREVCVUcpIGxvZygnW0RlYnVnXSBGdW5jdGlvbiB0byBjYWxsYmFjayBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0sIERFTEFZICsgKDIwICogY291bnRlcikgKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfSk7Cn0KCmxldCBzdGF0ZXNUb0NyZWF0ZSA9IFsKICAgIFsnQWxleGEuQnV0dG9uLkxpY2h0X2RpbW1lbicsIHsnbmFtZSc6ICdMaWNodCBEaW1tZW4nLCd0eXBlJzogJ2Jvb2xlYW4nLCAncmVhZCc6IHRydWUsICd3cml0ZSc6IHRydWUsICdyb2xlJzogJ2J1dHRvbicsJ2RlZic6ZmFsc2UsICJzbWFydE5hbWUiOiB7ImRlIjogIkVzc3Rpc2NobGFtcGUgRGltbWVyIiwic21hcnRUeXBlIjogIlNXSVRDSCJ9IH1dLCAKCl07ICAgIApjcmVhdGVVc2VyU3RhdGVzKCcwX3VzZXJkYXRhLjAnLCBmYWxzZSwgc3RhdGVzVG9DcmVhdGUpOw==</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> <block type="procedures_callcustomnoreturn" id=")mkV#y*GjLhBQ@,dfLM`" x="13" y="112"> <mutation name="Datenpunkte_anlegen"></mutation> </block> </xml>
  • Simple Szene mit nuki-extended als trigger

    scenes
    2
    0 Votes
    2 Posts
    158 Views
    Thomas BraunT
    Hat sich erledigt. Habe immer einen falschen Wert für den Trigger gehabt.
  • Instanz neu starten wenn verbindung nicht mehr steht

    blockly
    2
    1
    0 Votes
    2 Posts
    465 Views
    T
    Hallo, ich würde das so lösen: [image: 1581802350887-bildschirmfoto-2020-02-15-um-22.31.50.png] Objekt ID ist der Datenpunkt der bei einer Aktualisierung gesetzt wird und startet einen Timeout der nach einer definierten Zeitspanne deine Aktion ausführt. Bei einer erneuten Akutalisierung wird der Timeout neugestartet.
  • Stromverbrauch in Fr. ausrechnen (Hoch und Niede

    blockly monitoring
    4
    2
    0 Votes
    4 Posts
    618 Views
    paul53P
    @Massimo sagte: Müsste er dann diese 2 verschiedene Tariffe in unterschiedlichen Datenpunkte schreiben? Es sind zwei Datenpunkte mit den beiden Tarifen (Fr/kWh) erforderlich. Bei zwei Tarifen muss auch ein Gesamtkostenstand (analog zum Zählerstand) mitgeführt werden, da eine einfache Multiplikation mit der Zählerdifferenz nicht ausreicht. Vorschlag: [image: 1581793294111-blockly_temp.jpg]
  • Brauche Hilfe bei Systeminfo-Adapter

    javascript
    1
    1
    0 Votes
    1 Posts
    195 Views
    No one has replied
  • umstieg von pimatic

    blockly
    6
    0 Votes
    6 Posts
    502 Views
    M
    ganz optimal funktioniert es noch nicht. die stunde aktiv klappt nicht. woran kann das liegen? [image: 1581771831566-bildschirmfoto-2020-02-15-um-13.59.04-resized.png]
  • Blockly Zeitplan error

    javascript blockly
    45
    2
    0 Votes
    45 Posts
    2k Views
    dslraserD
    @xxx_turbo_xxx ich meinte es genau da in den Objekten, wenn Du da bei dem aktuellen Zählerstand mal von Hand was einträgst sollte schon was gerechnet werden. (das passiert ja sonst nur 1 x im Monat, nur mal schon vorher zum testen / probieren)

718

Online

32.7k

Users

82.5k

Topics

1.3m

Posts