Skip to content

Skripten / Logik

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

16.6k Themen 213.6k Beiträge

NEWS

Unterkategorien


  • Hilfe für Skripterstellung mit JavaScript

    2k 49k
    2k Themen
    49k Beiträge
    W
    Hallo zusammen! :-) Schön, dass das Projekt immer noch so aktiv genutzt wird. Bei mir sieht es zeitlich leider weiterhin sehr knapp aus. Allerdings habe ich im Zuge anderer Projekte den Versuch gestartet, das Skript in einen Adapter zu überführen und diesen auf GitHub zu veröffentlichen. Ich werde den Adapter selbst nicht mehr pflegen und testen können, aber vielleicht findet sich ja jemand, der Lust hat, daran mitzuarbeiten. Ich habe zudem versucht, die Regellogik von EcoFlow unabhängig zu machen, sodass theoretisch jeder Wechselrichter steuerbar ist. Das ist bisher jedoch komplett ungetestet. Hier findet ihr das Repository: https://github.com/Waly-de/ioBroker.ecoflow-powercontrol Damit könnte theoretisch auch – falls die bisherige Schnittstelle ausfällt – eine Anbindung über die offizielle API möglich werden. In der Admin-Oberfläche kann die letzte Version des Skriptes einfach per Copy-and-paste eingefügt werden; es sollte eigentlich alles an Einstellungen übernommen werden. Testet es gerne mal aus! Aber gleich vorab: In den nächsten acht Wochen werde ich leider nicht daran weiterarbeiten können. Sorry dafür! :-( Es wäre toll, wenn sich jemand aus der Community findet, der das Projekt weiter vorantreiben möchte. Viele Grüße Markus
  • Hilfe für Skripterstellung mit Blockly

    7k 79k
    7k Themen
    79k Beiträge
    OliverIOO
    @ltsalvatore Du könntest versuchen genau das beschriebene Muster versuchen zu erkennen. Also nach der Aktivität und unter 1W dann nochmal auf den Anstieg warten und erst den nächsten Abfall auf unter 1W als Ende erkennen. Am besten den einzelnen Phasen noch Namen geben und in einen datenpunkt schreiben. Dann kann das wieder weiters ausgewertet werden und Aktionen gestartet werden.
  • Hilfe für Skripterstellung mit Node-RED

    953 13k
    953 Themen
    13k Beiträge
    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
  • Time Of Day - Design Pattern

    template javascript
    2
    2
    3 Stimmen
    2 Beiträge
    1k Aufrufe
    ?
    @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 Stimmen
    2 Beiträge
    264 Aufrufe
    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 Stimmen
    8 Beiträge
    626 Aufrufe
    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 Stimmen
    11 Beiträge
    2k Aufrufe
    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

    Verschoben
    8
    0 Stimmen
    8 Beiträge
    4k Aufrufe
    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 Stimmen
    6 Beiträge
    563 Aufrufe
    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 Stimmen
    4 Beiträge
    402 Aufrufe
    T
    @Berchemer In allen von dir genannten Fällen sind die Variablen leer/undefiniert. Vorteil von Variablen ist, das sie effizienter als States sind.
  • Logik-Programmierung abseits von Blockly / Szenen möglich ?

    scenes blockly
    2
    1
    0 Stimmen
    2 Beiträge
    439 Aufrufe
    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 Stimmen
    3 Beiträge
    797 Aufrufe
    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

    Verschoben
    19
    0 Stimmen
    19 Beiträge
    4k Aufrufe
    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 Stimmen
    3 Beiträge
    297 Aufrufe
    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 Stimmen
    49 Beiträge
    6k Aufrufe
    T
    Ist alles im Beispiel von dslraser enthalten.
  • mehrere unterschiedliche trigger auf ein Script?

    javascript blockly
    15
    1
    0 Stimmen
    15 Beiträge
    704 Aufrufe
    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 Stimmen
    2 Beiträge
    158 Aufrufe
    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 Stimmen
    2 Beiträge
    461 Aufrufe
    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 Stimmen
    4 Beiträge
    599 Aufrufe
    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 Stimmen
    1 Beiträge
    195 Aufrufe
    Niemand hat geantwortet
  • umstieg von pimatic

    blockly
    6
    0 Stimmen
    6 Beiträge
    491 Aufrufe
    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 Stimmen
    45 Beiträge
    2k Aufrufe
    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)
  • Update Js Controler

    javascript
    3
    0 Stimmen
    3 Beiträge
    294 Aufrufe
    crunchipC
    @albbino [image: 1581671977233-beca7ff8-555b-4421-af39-6600a76e8c5b-image.png]

387

Online

32.7k

Benutzer

82.4k

Themen

1.3m

Beiträge