Skip to content

Skripten / Logik

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

16.4k Topics 211.6k Posts

NEWS

Subcategories


  • Hilfe für Skripterstellung mit JavaScript

    2k 48k
    2k Topics
    48k Posts
    MartinPM
    Ich habe das Script etwas angepasst - ich habe nur einen Micro-Inverter von FoxEss (Balkonkraftwerk, keine Batterie (deshalb SOC unnötig, und auch keine Lastmessung deshalb Load unnötig) Da der kleine Wechselrichter auch die Erzeugung in kW ausgibt, habe ich das Round angepasst - es kommen dadurch "glatte" Wattwerte (nicht kW) ohne Komma in den Datenpunkt [image: 1763375763629-14b37deb-eed3-4e1f-abd2-b94db89a25c7-grafik.png] /* Dieses Script ruft alle 2 Minuten die FoxESS Cloud über eine RestAPI auf und speichert die aufgerufenen Informationen an die entsprechenden Objekte im IO-Broker. */ const https = require("https") const crypto = require('crypto') const token = "...."; /* Hier muss der API-Key aus der FoxESS Cloud eingefügt werden */ const sn = "...."; /* Hier muss die Seriennummer vom Inverter aus der FoxESS Cloud eingefügt werden */ schedule("*/2 * * * * ", async function () { try { const data = JSON.stringify({ "sn": sn, "variables": [ "pvPower" /*, "generationPower", "SoC", "loadsPower" */ ] }); const path = "/op/v0/device/real/query"; const milliseconds = new Date().getTime(); const signature = crypto.createHash('md5').update(path + "\\r\\n" + token + "\\r\\n" + milliseconds).digest("hex"); const options = { headers: { "Content-Type": "application/json", "token": token, "timestamp": milliseconds, "signature": signature, "lang": "en" }, hostname: "www.foxesscloud.com", method: "POST", path: path, port: 443 } const request = https.request(options, response => { console.log('STATUS: ' + response.statusCode); //response.setEncoding('utf8'); response.on("data", function (res) { // console.log(res); const datas = JSON.parse(res).result[0].datas; console.log(datas[0]); setState("0_userdata.0.FoxEss.PVPower", Math.round(datas[0].value * 1000), true); //setState("0_userdata.0.FoxEss.SOC", datas[2].value, true); //setState("0_userdata.0.FoxEss.Load", Math.round(datas[3].value * 1000) / 1000, true); }); }); request.write(data); request.end(); } catch (e) { console.error(e); } }); Meine Planungen für weitere Ergänzungen am Script: Tagesbudget an Queries sparsamer einsetzen a) zwischen Dämmerungsende und Dämmerungsbeginn keine Werte über die API abfragen (da kann es keine Erträge geben). b) bei niedrigen Erträgen ggfs. auch den Leserhythmus abschwächen. Ertrag Vortag einmalig am Folgetag abfragen Ertrag Vormonat einmalig am ersten Tag des Folgemonats abfragen.
  • Hilfe für Skripterstellung mit Blockly

    6k 78k
    6k Topics
    78k Posts
    AsgothianA
    @MartinP Alles Spekulation. Die entscheidenden Informationen liegen uns nicht vor. Weder wo die Verzögerungen her kommen, noch warum sie so problematisch sein sollen. Bevor da nicht mehr Informationen kommen macht es wenig Sinn sich den Kopf an der Glaskugel aufzureiben. A.
  • Hilfe für Skripterstellung mit Node-RED

    952 13k
    952 Topics
    13k Posts
    F
    DANKE! Ich Blindfisch. Habe bei den Adaptern selbst geschaut, und beim Admin, dachte unter dem hängt alles, was er "administriert". "SYSTEM" habe ich komplett übersehen - Schande. Über Wochen nicht laden: ja, kommt vor, v.a. wenn sich unterwegs DC-Gelegenheiten (Bauhaus...) ergeben, dann nehm' ich da den Strom mit. Und lass es nur 10 - 14 Tage sein die das Ding nicht gebraucht wird. Ein Schalter an der Box selber wäre toll, hat sie aber nicht. Oder ein fernsteuerbarer Sicherungsautomat. Aber so geht man(n) wenigstens mal in den Keller :), Bewegung soll ja gesund sein... Wenn ich die Lichtorgel abschalte vergesse ich womöglich die Box abzuschalten...
  • Probleme mit Javascript Adapter

    Moved
    5
    1
    0 Votes
    5 Posts
    487 Views
    M
    @Rainer: Hab es komplett gelöscht. Aber Danke Dir für den Hinweis. Gruß Markus
  • [gelöst]Variablen vom gleicher Typ lassen sich nicht laden

    Moved
    4
    0 Votes
    4 Posts
    400 Views
    paul53P
    Schreibe [gelöst] bitte in den Betreff des <u>ersten</u> Beitrags.
  • Zeitschaltuhr

    Moved
    3
    0 Votes
    3 Posts
    515 Views
    Q
    Das hätte ich jetzt auch geschrieben und verlinkt. Also die Zeitschaltuhr funktioniert bei mir bislang super. Nur an der Wochentageeingabe scheitert es. Gesendet von iPhone mit Tapatalk
  • [Blockly/JavaScript] SQL Abfrage - Ergebnis in Variable speichern

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    paul53P
    @BeautyBoyBob: Ich tracke über sql.0 Zustände von HomeMatic Komponenten. So bspw. auch eine Sensor, der misst, ob der Toilettendeckel geöffnet ist oder nicht. ` Weshalb möchtest Du sql.0 auswerten ? Da wirst Du mit Blockly nicht weit kommen. Die Auswertung des Datenpunktes "Toilettendeckel" ist viel einfacher. [image: 493_blockly_ed_s.jpg]
  • [GELÖST] Neuen Alexa Adapter 2.0 per Skript steuern

    Moved
    3
    0 Votes
    3 Posts
    2k Views
    dslraserD
    Ich habe mir den Ping Adapter mal installiert und angesehen. Bei mir ist der auf 60000 ms Ping Intervall eingestellt. Das heißt, der aktualisiert sich jede Minute. Es kann also immer eine andere Zeit dabei heraus kommen wann die Ansage kommt, je nachdem wann sich das Handy einbucht und wann gerade das Ping Intervall war. Deshalb finde ich den Adapter nicht so gut geeignet für den Vorhaben. Wenn beim verlassen keine Ansage kommen soll, einfach den Text löschen und leer lassen. Ich habe das bei mir über IFTTT gelöst, das funktioniert recht gut. Hier mal mein Beispiel für den Ping Adapter. Javascript/js var timeout; on({id: 'ping.0.xxx.192_168_180_9', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; // Alexa Wohnzimmer timeout = setTimeout(function () { setState("alexa2.0.echo-devices.xxx.Commands.speak"/*speak*/, (String(getState("ping.0.xxx.192_168_180_9").val ? 'falls wahr hier Deinen Text hin' : 'falls unwahr hier Deinen Text hin'))); }, 30000); }); Die 30000 sind Millisekunden, also 30 Sekunden… Hier das Blockly [image: 3822_anwesenheit-ping-adapter.jpg]
  • MQTT ON bzw. OFF Status verwenden in Blockly

    Moved
    1
    2
    0 Votes
    1 Posts
    584 Views
    No one has replied
  • *gelöst* Licht ausschalten nach Zeitplan fkt. nicht

    Moved
    3
    1
    0 Votes
    3 Posts
    541 Views
    surfer09S
    Oahh nee… :roll: :lol: Das Konstrukt an sich, ist aber okay so? Danke dir!
  • Blockly - Variablen verschieben

    Moved
    5
    1
    0 Votes
    5 Posts
    909 Views
    nowak222N
    Bitteee…
  • 0 Votes
    7 Posts
    674 Views
    D
    @daNick: Hallo! Ich hoffe, ich habe nichts überlesen, aber ich finde hierfür keine Lösung: Aufgabenstellung: Output von Shell-Befehl auswerten und als Datenpunkte speichern. Ich nutze https://github.com/sivel/speedtest-cli um meine Internetverbindung zu überwachen. Der Output sieht etwa so aus __pi@ioBroker-Pi:~ $ speedtest-cli –simple Ping: 15.735 ms Download: 84.57 Mbit/s Upload: 7.83 Mbit/s__ Ich "brauche" nun ein Script, das: 1. "(PFAD/)speedtest-cli – simple" auf der Shell ausführt 2. Aus dem Output die Zahlen (gem Beispiel) 15.735, 84.57 und 7.83 in Variablen extrahiert. 3. Damit ich diese Variable dann in Objekte speichern kann. 4. Die dann mit HISTORY geloggt werden. Der Punkt, zu dem ich Hilfe bräuchte wäre 2. (der uU mit 1. zusammenhängt). Danke! Nico `
  • BLOCKLY - Probleme mit Anrufansage auf Funk-Gong

    Moved
    10
    1
    0 Votes
    10 Posts
    1k Views
    M
    Gerne…!
  • Wasserstandssensor Wert für Blockly verwertbar machen

    Moved
    15
    0 Votes
    15 Posts
    2k Views
    wendy2702W
    Versuch mal den Trigger auf "Wurde geändert" zu setzen.
  • Schleppzeiger

    Moved
    3
    0 Votes
    3 Posts
    526 Views
    P
    Hallo, kann dir nur eine Lösung in Skript geben, da ich Blockly nicht nutze: const idInputAmpere = "ADAPTER.NR.INSTANZ"; // Hier den Strommesser definieren const idSchlepp = "javascript." + instance + ".Schleppzeiger.Ampere; // Neuer Datenpunkt für VIS const minimal = 0; // statt 0 kannst du natürlich auch einen anderen Minimalwert nehmen createState(idSchlepp, minimal, false, { name: "Schleppzeiger Ampere", desc: "Schleppzeiger für Stromstärke", type: "number", unit: "A", role: "value.max" }); on({ id: idInputAmpere, change: "gt" // neuer wert größer als alter wert }, function(obj) { log("Schleppzeiger Stromstärke - alter Wert: " + obj.oldState.val + "A - neuer Wert: " + obj.state.val + "A"); setState(idInputAmpere, obj.state.val); }); schedule("0 0 0 0 0", function() { // Mitternacht setState(idSchlepp, minimal); log("Schleppzeiger zurückgesetzt"); }); Dazu musst du in den VIS-Widget-Einstellungen den Maximalwert unter "max" als Binding einfügen. Ich gehe jetzt mal von der javascript-Instanz "0" aus, dann sieht das so aus: {javascript.0.Schleppzeiger.Ampere} So passt sich dieser Wert immer dem Maxwert an. Und natürlich die gleiche ID ohne die geschweiften Klammern in ID eintragen. Gruß Pix
  • 0 Votes
    2 Posts
    628 Views
    R
    Die Frage ist schon länger her und sicher nicht mehr aktuell aber vielleicht auch irgendwann mal für Andere relevant: Die on-Funktion ist meiner Meinung nach hier fehl am Platz. Wenn der Status mit einer einfachen if-Abfrage abgefragt wird, sollte die Ansage über das geoeffnete Fenster nach dem Scharfschalten der Alarmanlage funktionieren. setState("mihome.0.devices.gateway_7811dce1d311.on"/*Light*/, true); on({id: "mihome.0.devices.magnet_158d0001d839ab.state"/*Is opened*/, val: true}, function (obj) {
  • Bild von Kamera per Mail oder Pushover versenden

    Moved
    3
    0 Votes
    3 Posts
    897 Views
    D
    Muss man es denn mit node-pushover machen? Hier mal ein Shellscript, das ich zum Versenden von Bildern per Pushover auf einem Raspi laufen lasse. #!/bin/bash LBoxPi_IP=192.168.xxx.xxx # IP-Adresse des LBoxPi # Pushover Keys PoToken=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx # Token PoUser=xxxxxxxxxxx # API-Key # Snapshot holen wget -O /home/pi/Haustürklingel.jpg http://${LBoxPi_IP}:8181/cam.jpg # Nachricht erzeugen und senden PoMessage="Haustürklingel in Abwesenheit betätigt." PoPrio=-1 PoSound=pushover curl -s -k -F token=$PoToken -F user=$PoUser -F message="$PoMessage" -F attachment="@/home/pi/Haustürklingel.jpg" -F priority=$PoPrio -F sound=$PoSound -F html=1 "https://api.pushover.net/1/messages.json" exit 0 Sollte sich in abgewandelter Form doch auch in Javascript nutzen lassen, oder?
  • [gelöst]js wie image aus base64 convertieren?

    Moved
    2
    0 Votes
    2 Posts
    598 Views
    S
    so ich habe das Thema gelöst… war eigendlich recht simpel... die hex-Strings die vom Onkyo kommen in Base64 wandeln var hextob64 = new Buffer(hexstring, 'hex').toString('base64') und alle stringszusammenfügen… anschließend einfach die Daten dirkt als surche in die Widget.html einfügen... $div.find('.player-track-art').attr('src', vis.states[data.oid_cover + '.val']); und schon klappts… [image: 8jzTaQc.jpg]![](</s><URL url=)https://i.imgur.com/8jzTaQc.jpg" />
  • Trigger für Javascript 1x mal abfragen vor Programmausführung

    Moved
    7
    0 Votes
    7 Posts
    596 Views
    smartboartS
    An Bluetooth hatte ich auch schon gedacht, dafür gibt es ja auch schon dongle für den Schlüsselbund. Die Reichweite und die Abhängigkeit einer weiteren Funkverbindung hat mich dann aber davon abgehalten. Aber der Faktor Frau und Akzeptanz ist natürlich auch immer wieder ein Problem. :twisted: Wenn ich jetzt noch mit nem Feldtest und Bluetooth anfange ist es ganz vorbei… :roll: Ich wurde schon genötigt die Aktivierung und Deaktivierung nur noch manuell einleiten zu lassen, nachdem die Anlage sich dann Selbstständig machte, weil sich das Telefon abmeldete... Also entweder über vis oder Funkfernbedienung... Und das ist ja schon realisiert.
  • Wie in Blockly den aktuellen Status einer Lampe speichern ?

    Moved
    5
    0 Votes
    5 Posts
    2k Views
    S
    Danke für die Hilfe, es klappt
  • [Frage] Piko Wechslerichter 5.5 (Firmware 5.31) auslesen

    Moved
    24
    0 Votes
    24 Posts
    5k Views
    S
    Hallo Sascha, ich habe die Werte damals im Photovoltaik-Forum in folgendem Thread gefunden „https://www.photovoltaikforum.com/kosta … 15856.html“ Vielleicht kannst du dort mal nachfragen. Gruß Strizz Gesendet von iPad mit Tapatalk Pro
  • 0 Votes
    1 Posts
    492 Views
    No one has replied
  • [gelöst] (Blockly) definierte Zeit etwas abschalten

    Moved
    12
    1
    0 Votes
    12 Posts
    2k Views
    J
    Das geht recht schnell, wenn man mal ein paar Scripte mit Blockly erstellt hat

604

Online

32.4k

Users

81.4k

Topics

1.3m

Posts