Weiter zum Inhalt

Skripten / Logik

16.7k Themen 215.6k 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
    Hallo zusammen, @Daniel-8 Sorry, dass ich mich erst jetzt wieder melde. Ich bin gerade intensiv mit dem Reverse Engineering beschäftigt und habe auch viel Zeit im source-code der Zendure-App verbracht – alles sehr zeitaufwendig. Wenn du aktuell auf der Firmware 2.0.1 bist, könntest du in der App mal verschiedene Einstellungen bei der Kalibrierung vornehmen und die Daten mitloggen oder beobachten? Mich würde interessieren, wann genau sich socCompSwitch und batCalTime ändern und welche Werte in diesem Moment gesetzt werden. Anscheinend: version:3 vs version:2 LCNstate wurde entfernt socCompSwitch wurde hinzugefügt. Kann nicht selbst testen, weil ich bewusst noch kein Update durchführe(n kann). Zu meinem Beitrag bezüglich des unknown ca-Fehlers beim SolarFlow 1600 AC+: maxclaudi sagte: @nograx Dankeschön edit 12.07.2026 11.00h: Ich habe das ebenfalls getestet. Leider wurde dieses – noch einfachere – Zertifikat von meinem 1600AC+ ebenfalls nicht akzeptiert. Info: Mit openssl s_client gegen mq.zen-iot.com:8883 erhält man folgende Informationen: CONNECTED(00000004) depth=1 C=CN, ST=hangzhou, O=EMQ, CN=RootCA verify error:num=19:self-signed certificate in certificate chain verify return:1 depth=1 C=CN, ST=hangzhou, O=EMQ, CN=RootCA verify return:1 depth=0 C=CN, ST=hangzhou, O=EMQ, CN=Server verify return:1 ..... --- Certificate chain 0 s:C=CN, ST=hangzhou, O=EMQ, CN=Server i:C=CN, ST=hangzhou, O=EMQ, CN=RootCA a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: May 8 08:07:05 2020 GMT; NotAfter: May 6 08:07:05 2030 GMT ...... 1 s:C=CN, ST=hangzhou, O=EMQ, CN=RootCA i:C=CN, ST=hangzhou, O=EMQ, CN=RootCA a:PKEY: rsaEncryption, 2048 (bit); sigalg: RSA-SHA256 v:NotBefore: May 8 08:06:52 2020 GMT; NotAfter: May 6 08:06:52 2030 GMT Server certificate subject=C=CN, ST=hangzhou, O=EMQ, CN=Server issuer=C=CN, ST=hangzhou, O=EMQ, CN=RootCA --- No client certificate CA names sent Peer signing digest: SHA256 Peer signature type: RSA-PSS Server Temp Key: X25519, 253 bits --- SSL handshake has read 2205 bytes and written 402 bytes Verification error: self-signed certificate in certificate chain --- New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384 Server public key is 2048 bit This TLS version forbids renegotiation. No ALPN negotiated Early data was not sent Verify return code: 19 (self-signed certificate in certificate chain) Nach meiner Interpretation bedeutet das: Zendure verwendet kein einzelnes selbstsigniertes Serverzertifikat, sondern eine Zertifikatskette aus einer selbstsignierten Root-CA (RootCA) und einem von dieser Root-CA signierten Serverzertifikat (Server). Die Root-CA ist selbstsigniert und wird vom OpenSSL-Client deshalb erwartungsgemäß nicht als vertrauenswürdig eingestuft (Verify return code: 19). Das Serverzertifikat verwendet RSA-2048 und ist bis 2030 gültig. Interessant ist das Ausstellungsdatum von bereits 2020. Bei meinem SolarFlow 1600 AC+ wird ein einfaches selbstsigniertes Serverzertifikat bisher mit unknown ca abgelehnt, obwohl RSA-2048, TLS 1.2, passende Cipher und SAN verwendet werden. Nach den bisherigen Erkenntnissen scheint sich die TLS-Implementierung der Hyper-Geräte von der der neueren AC-Serie zu unterscheiden. Ob dies tatsächlich an einer strengeren Zertifikatsprüfung liegt oder eine andere Ursache hat, ist mir derzeit noch unklar. Als nächsten Schritt werde ich versuchen, statt eines einzelnen selbstsignierten Serverzertifikats ebenfalls eine Zertifikatskette (Root-CA - > Serverzertifikat) nachzubilden. Ob das vom 1600 AC+ akzeptiert wird, halte ich allerdings für eher fraglich. Meine Vermutung hat sich inzwischen bestätigt und ich habe eine erfolgversprechende Lösung für die Zertifikatskette gefunden. Da ich momentan nicht vor Ort bin, steht der finale Praxistest direkt mit dem 1600 AC+ noch aus. Sobald ich wieder Zugriff habe, wird sich zeigen, ob der Cloud-Server damit komplett durch einen lokalen Broker ersetzt werden kann. Ziel ist ein vollständig lokales Setup mit eigenem MQTT-Broker, zusätzlichen Keys und schnellem, direktem MQTT. Läuft der Test erfolgreich, hätte man bis zum Ablauf des Original-Zertifikats am 6. Mai 2030 um 10:07:05 Uhr (MESZ) erst einmal Ruhe – also für gut 3,5 Jahre ein schnelles, stabiles, lokales MQTT-System. Ich bin parallel auch gerade dabei, eine Windows-Konsolen-Anwendung zu schreiben. Bitte habt etwas Verständnis und Geduld, wenn ich nicht immer sofort antworte. Danke und viele Grüße!
  • Hilfe für Skripterstellung mit Blockly

    7k 80k
    7k Themen
    80k Beiträge
    HomoranH
    @emil70 sagte: Das ist mein Netzwerk zu Hause. Dann musst du die IPs anpassen. Diese IPs sind reserviert und dürfen nicht in privaten Netzen verwendet werden. Beim Aufruf einer 192.168.x.y weiss der Router dass das eine private IP ist und sucht bei dir zu Hause. Nimmst du aber 125.123.x.y sucht der Router im Internet bei Chinanet.
  • Hilfe für Skripterstellung mit Node-RED

    962 13k
    962 Themen
    13k Beiträge
    Thomas BraunT
    @Taddy81 Haste denn jetzt mal in die Settings geschaut und da deine Zeitzone eingetragen?
  • Stromzähler über S0-Schnittstelle

    24
    3
    0 Stimmen
    24 Beiträge
    2k Aufrufe
    draexlerD
    @jan201 Hi, welchen Zähler verwendest du? Bin auf der Suche.
  • Blockly - Nutzen von timestamp

    javascript
    17
    2
    0 Stimmen
    17 Beiträge
    6k Aufrufe
    AsgothianA
    @kleinesa Prüf mal die Systemzeit auf dem Rechner wo der ioBroker installiert ist. A.
  • SendTo in Blockly

    Verschoben
    14
    0 Stimmen
    14 Beiträge
    5k Aufrufe
    D
    @buzzy Toller Tip danke. Bei mir war es der enigma2 Adapter. Aus lauter Verzweiflung habe sogar Telegram kurzzeitig installiert. greetz dipsy
  • Dieses Thema wurde gelöscht!

    5
    0 Stimmen
    5 Beiträge
    37 Aufrufe
  • Sonne blendet -> Jalousie

    19
    0 Stimmen
    19 Beiträge
    819 Aufrufe
    UweRLPU
    @chris-1 sagte in Sonne blendet -> Jalousie: Wobei.... es scheint mir so, dass der Ansatz dahinter ein anderer ist.... Bei mir sollen die Jalousien prinzipiell immer oben sein, nur dann, wenn ich geblendet werde, Nunja ob du geblendet wirst ist ja ausschließlich von dir abhängig. Ob man sowas automatisieren kann ist fraglich. Am einfachsten stelle ich mir bei der Aufgabenstellung ein Alexa Komando bzw. vis-Bedienung vor die du auslöste wenn du geblendet wirst. Details zum Adapter selbst kann ich dir leider nicht beantworten weil ich diesen nicht selbst nutze. Ich habe per Blockly und vier Temperatursensoren (alle Himmelsrichtungen und Temperatur Differenz) einen Sonnenschutz kreiert der für mich funktionell ist.
  • History, InfluxDB Datenpunkte werden automatisch deaktiviert

    4
    0 Stimmen
    4 Beiträge
    162 Aufrufe
    T
    @homoran kann weg
  • Übersicht über DP Typen

    5
    0 Stimmen
    5 Beiträge
    271 Aufrufe
    crunchipC
    @codierknecht sagte in Übersicht über DP Typen: Achtung - der Erbsenzähler ist wieder da Falls hier jemand mitliest, der sich für die Pflege der Doku verantwortlich fühlt: https://forum.iobroker.net/category/186/dokumentations-support jeder darf und kann da mitwirken
  • Stiebel Eltron ISG auslesen

    1
    0 Stimmen
    1 Beiträge
    370 Aufrufe
    Niemand hat geantwortet
  • Überleben Timeouts einen Restart?

    11
    0 Stimmen
    11 Beiträge
    978 Aufrufe
    HomoranH
    @liv-in-sky genau so! aber ob das @liv-in-sky sagte in Überleben Timeouts einen Restart?: doch nicht so wild: ist, lasse ich jetzt mal offen.
  • [suche] Blockly Goto oder Stop

    7
    0 Stimmen
    7 Beiträge
    750 Aufrufe
    HomoranH
    @simplyclever dann verstehe ich deine Eingangsfrage nicht, bzw. kann sie nicht zuordnen. Wenn du ein stop über eine Logik auslösen könntest, sollte die gleiche Logik bei eventbasiertem Skripting nicht umfangreicher sein.
  • Typ falsch, bzw. number wird als string erwartet (alias)

    6
    0 Stimmen
    6 Beiträge
    435 Aufrufe
    H
    @paul53 Es sieht zumindest so aus, als wäre nicht klar, was es sein soll. Nach Anlage steht "" in min und max. Nach Schreiben ist es null. Wenn ich Werte eintrage, also eine Ansage mache, was es denn sein soll, passt es. Ich danke euch.
  • "Alles-Aus"-Taster mit "Speicherung"

    scenes
    8
    0 Stimmen
    8 Beiträge
    725 Aufrufe
    ChaotC
    Die Idee klingt interessant, aber ich denke das sich das in der Realität schnell wieder erledigen wird. Ich kann mir für mich persönlich jetzt keine Situation vorstellen bei der ich beim Betreten der Wohnung die gleichen Zustände wie beim Verlassen benötige. Ich möchte jetzt nach der Weihnachtszeit ein Projekt angehen das auch ungefähr in deine Richtung geht. Wenn beim Betreten der Wohnung ein Taster gedrückt wird soll je nach Helligkeit, Tageszeit und Wochentag ein bestimmtes Szenario geschaltet werden. Beispielsweise: Werktags 17 Uhr, Dunkel, Kalt - Heizung Absenkmodus aus, Licht Korridor an, Licht Küche an, Heizung Bad für die nächste Stunde auf "Boost" Aktuell bin ich dabei die für mich/uns benötigten Szenarien und Zeiten aufzulisten um einen Überblick zu bekommen wie Umfangreich meine Vorstellung sein wird.
  • Einstellung Instanz per Script ändern

    7
    1
    0 Stimmen
    7 Beiträge
    824 Aufrufe
    Z
    @thomas-braun Ok vielen Dank. Ich werde es ausprobieren.
  • Lichtauswertung zählt gedimmte Lichter nicht

    2
    0 Stimmen
    2 Beiträge
    263 Aufrufe
    mickymM
    @marsmännchen Meines Erachtens musst Du die Bedingungen ab Zeile 325 aufbohren und in den Du eine weitere Bedingung eingibst. Ich bin aber kein JS Programmierer und habe das Script nur überflogen. if (LightIsOnWhen.indexOf(SensorVal[x]) != -1) { // Suche in Lichtereinnarray, wenn gefunden, Status auf on setzen SensorVal[x] = "on"; } else if (LightIsOffWhen.indexOf(SensorVal[x]) != -1) { // Suche in Lichterausarray, wenn gefunden, Status auf off setzen SensorVal[x] = "off"; }; else if (typeof SensorVal[x] === "number") { // Überwachter Datenpunkt enthält nummerische Werte SensorVal[x] = SensorVal[x] > 0 ? "on" : "off"; }; Wenn das aber verschiedene Zustände für an aus und den Dimmer sind, dann musst halt ein Alias nehmen, der Dir halt ein on oder off beim Lesen ausgibt:
  • Fehler bei Adapter tvspielfilm

    15
    0 Stimmen
    15 Beiträge
    2k Aufrufe
    tugsiT
    @homoran Stimmt, ist nur in dem Beta Repository, sorry, ist bei mir eingestellt, da denk ich dann nicht dran ;) Die Datenpunkte für den Tagestipp kannst Du löschen, werden ja nicht mehr aktualisiert. Aber auch so, wenn Du ausversehen "zuviele" Datenpunkte löscht, beim nächsten Aufruf, schreibt die Instanz die neu.
  • [gelöst] Mittelwert ohne feste Abtastrate

    Verschoben
    10
    0 Stimmen
    10 Beiträge
    2k Aufrufe
    D
    @paul53 Ich habe mich auch gerade damit beschäftigt und meine, dass da ein kleiner Fehler drinsteckt: Es sollte heißen: if(i + 1 < result.result.length) integral = integral + result.result[i].val * (result.result[i+1].ts - result.result[i].ts); Mein Dank gebührt trotzdem @paul53. Ohne ihn hätte ich den Ansatz nicht gefunden! Mein Code sieht komplett dann so aus (für die Nachwelt): var end = Date.now(); sendTo('history.0', 'getHistory', { id: 'mqtt.0.heizung.HzAnlage.Laststellung', options: { start: end - 86400000, end: end, aggregate: 'none' } }, function (result) { var integral = 0; console.log("Anzahl: "+result.result.length); for (var i=0; i < result.result.length; i++) { console.log(i+"---"+result.result[i].ts + "---"+ result.result[i].val); } // Test for (var i=0; i < result.result.length; i++) { // var zeitdiff = 0; // zeitdiff = result.result[i+1].ts - result.result[i].ts; // console.log(i+"--diff--" + zeitdiff); if (i + 1 < result.result.length) { integral = integral + ( result.result[i].val * (result.result[i+1].ts - result.result[i].ts) ) ; } else { integral = integral + result.result[i].val * (end - result.result[i].ts); } // Else Ende } // Schleifen Ende var gesamtzeit = end - result.result[0].ts; console.log("Gesamtzeit in sek: " + gesamtzeit/1000 + " = "+ gesamtzeit/(1000*60) + " min = " + gesamtzeit/(1000*60*60) + " h"); var mittelwert = integral / gesamtzeit; console.log("Mittelwert: " + mittelwert); // Hier Zuweisung an eine iobroker Variable }); // function ende
  • JSON Wert mit Blockly schreiben

    41
    2
    0 Stimmen
    41 Beiträge
    5k Aufrufe
    K
    @paul53 und nochmal was gelernt, vielen Dank!!
  • InfluxDB - Datenmigration für neue Sensoren?

    18
    0 Stimmen
    18 Beiträge
    2k Aufrufe
    W
    @marc-berg Danke, werde ich am WE gleich ausprobieren.
  • Zeitsteuerung mit An/Aus Intervallen und manuellem override

    5
    0 Stimmen
    5 Beiträge
    662 Aufrufe
    crunchipC
    @silbaer dann mach nen neuen Thread dazu auf, mit Details, wie, was und wo du installiert bzw gemacht hast
  • Kurze Frage zur Ressourceneinsparung, wenn dann Regel

    5
    0 Stimmen
    5 Beiträge
    573 Aufrufe
    paul53P
    @maduuto sagte: sondern Wired. Dann spielt der Duty cycle natürlich keine Rolle, aber unnötig versendete Telegramme erhöhen die Wahrscheinlichkeit von Kollisionen auf dem Bus, die wiederum zum wiederholten Senden der Telegramme führen.

461

Online

33.0k

Benutzer

83.5k

Themen

1.3m

Beiträge