NEWS
JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine
-
Hallo,
ich möchte mit den neuen Baustein HTTP Get einen Befehl an meinen Yamaha Receiver senden.
Beim start des Skript funktioniert das auch, aber dann nicht mehr. Löse das Skript via Button DP aus.

-
@sigi234 sagte: Löse das Skript via Button DP aus.
Dann packe den HTTP-Block in den Trigger auf "ist wahr".
@paul53 sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
@sigi234 sagte: Löse das Skript via Button DP aus.
Dann packe den HTTP-Block in den Trigger auf "ist wahr".
Danke , funktioniert muss halt immer 2 mal klicken.

-
@paul53 sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
@sigi234 sagte: Löse das Skript via Button DP aus.
Dann packe den HTTP-Block in den Trigger auf "ist wahr".
Danke , funktioniert muss halt immer 2 mal klicken.

-
Aktuelle Test Version 7.9.0 Veröffentlichungsdatum 13.03.2024 Github Link https://github.com/ioBroker/ioBroker.javascript/releases/tag/v7.9.0 Auch in dieser Version gibt es wieder viele neue Blöcke, Bugfixes und Features. Das wichtigste zuerst:
Besten Dank an alle Teilnehmer des ioBroker-Master-Kurses. Ihr habt die vielen Stunden Entwicklung (wie immer) finanziert. Natürlich werde ich die neuen Bausteine und Feature auch dort in neuen Lektionen noch ausführlich zeigen und erklären.
Blockly-Bausteine für Objekte

Ich konnte es nicht mehr sehen, wie hier einige mit Text-Bausteinen JSON-Strings zusammenbauen. Super lange Verkettungen von Text, und am Ende wurde ein Komma abgeschnitten, damit das JSON gültig ist. Schlimm - aber das war in Blockly leider bis dato die einzige Möglichkeit neue Objekte zu erstellen.
Das ist jetzt anders. Du kannst ein neues Objekt anlegen und die Attribute frei (im Blockly) definieren. Das klappt einfach über das "Zahnrad" des Bausteins (wie bei vielen anderen Blöcken auch).

Nachträglich weitere Attribute hinzufügen geht selbstverständlich auch:

Entfernen von Attributen funktioniert genauso per Block. Also alles, um endlich einige Strukturen abzulösen. Die
Objekt zu JSON-Blöcke gibts ja schon länger. Und dann bekommst Du auch direkt "sauberes" JSON und kannst damit weiterarbeiten. Oder Du schreibst das Objekt direkt in einen Datenpunkt vom Typobjectoderarray- dann passiert die Konvertierung ganz automatisch. Aber das kennst Du ja wahrscheinlich schon und ist erstmal nix neues.HTTP-Funktionen
requestist ja leider schon lange deprecated und die Blockly-Bautsteine generieren JavaScript-Code, welcher das Paket mitrequiredirekt lädt. Das ist nicht so der Hit und wurde mal Zeit für eine Überarbeitung. Daher gibt es nun neue Blöcke. Nicht nur für GET, sondern auch für POST.
Der "alte" request Block erzeugt jetzt eine deprecated warning und wird irgendwann entfernt. Daher bitte auf die neuen Blöcke umstellen!
Intern unterstützt die Funktion auch Basic- und Digest-Authentication und eigene HTTP-Header - das ist nur noch nicht im Blockly-Baustein verfügbar. Ich muss mal schauen, wie das Thema angenommen wird und ob es dafür Bedarf gibt. Dann erweitere ich die Blöcke natürlich. Für die JavaScript-Varianten bitte in die Adapter-Doku schauen.
Installation des Adapters
Bitte ganz normal über das Beta-Repository oder das npm-Tab und NICHT über GitHub! Fragen dazu beantworte ich erstmal nicht. Absolute Grundlagen gibts an anderer Stelle ganz ausführlich.
-
@haus-automatisierung sagte: request ist ja leider schon lange deprecated
Ich habe in Version 7.9.4 festgestellt, dass für
requestwieder require('request') erforderlich ist. Habe PR für die Funktions-Doku erstellt.@paul53 Danke, ja eigentlich ist die Idee das direkt mit den neuen Funktionen zu ersetzen sodass man möglichst keine Abhängigkeiten in den Scripts hat
-
Ich verwende öfters den Parameter : mit Ergebnissen

Wie mache ich das nun mit dem neuen Block?
Hat sich erledigt, funktioniert.
-
@haus-automatisierung Bei CRON in der Form bekomme ich in Skripten mit 7.9.4 folgenden Fehler:

ReferenceError: check_garden_door_scheduler is not definedSelbst wenn ich den Titel im CRON ändere erscheint er nicht in den CRON Stop Block.
Bestehende Skripte zeigen optisch noch zum CRON Titel passende Titel im Stop, aber es kommt auch der ReferenceError wenn man speichert.Titel von neue Zeitplan CRON Triggern in einem komplett neuem Skript werden im Stop Block gar nicht angeboten.
Anscheinend wird keine Variable mehr vom Typ cron passend zum Zeitplan erstellt:<variable type="cron" id="check_garden_door_scheduler">check_garden_door_scheduler</variable>Edit: Mit 7.9.3 funktioniert es problemlos.
-
@ralla66 Du wollest einen leeren Post-Request und jetzt kommt die andere Seite damit nicht klar und möchte Werte? :)
Was rufst Du auf? Die ntp config? Die braucht doch Werte für die Konfiguration - laut Doku:
curl -u "admin:password" http://192.168.10.10/api/ntp/config -d 'data={"ntp_server":"my.own.ntp.server.home","ntp_timezone":"CET-1CEST,M3.5.0,M10.5.0/3","ntp_timezone_descr":"Europe/Berlin"}' {"type":"success","message":"Settings saved!"}Ich suche mal nicht weiter, gerne erklären wo der Fehler im JavaScript liegt mit einem funktionierenden Beispiel in curl.
kurz zur Info,
Post geht jetzt zu den Hoymiles Wechselrichtern raus, Limit wird in der WebUi gesetzt.
Code 1002 war Daten falsch gesendet.
Curl auf einem Windows 10 System muß Data in doppelten Hochzeichen gesetzt werden also
" data ...................... " sonst auch hier Code 1002
Daten Leerfeld teste ich noch per Wireshark.Geilomat,
Danke, Dankehttp://admin:blablabla@192.168.2.65/api/limit/config data={"serial":"114184210379", "limit_type":1, "limit_value":25}"
-
@haus-automatisierung Bei CRON in der Form bekomme ich in Skripten mit 7.9.4 folgenden Fehler:

ReferenceError: check_garden_door_scheduler is not definedSelbst wenn ich den Titel im CRON ändere erscheint er nicht in den CRON Stop Block.
Bestehende Skripte zeigen optisch noch zum CRON Titel passende Titel im Stop, aber es kommt auch der ReferenceError wenn man speichert.Titel von neue Zeitplan CRON Triggern in einem komplett neuem Skript werden im Stop Block gar nicht angeboten.
Anscheinend wird keine Variable mehr vom Typ cron passend zum Zeitplan erstellt:<variable type="cron" id="check_garden_door_scheduler">check_garden_door_scheduler</variable>Edit: Mit 7.9.3 funktioniert es problemlos.
-
kurz zur Info,
Post geht jetzt zu den Hoymiles Wechselrichtern raus, Limit wird in der WebUi gesetzt.
Code 1002 war Daten falsch gesendet.
Curl auf einem Windows 10 System muß Data in doppelten Hochzeichen gesetzt werden also
" data ...................... " sonst auch hier Code 1002
Daten Leerfeld teste ich noch per Wireshark.Geilomat,
Danke, Dankehttp://admin:blablabla@192.168.2.65/api/limit/config data={"serial":"114184210379", "limit_type":1, "limit_value":25}"
@ralla66 sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
Post geht jetzt zu den Hoymiles Wechselrichtern raus

Okay, aber warum als String? Normalerweise müsstest Du das auch als Objekt definieren können mit den verschiedenen Eigenschaften (der HTTP-Block macht dann ja JSON draus im POST-Request). So ist der Block zumindest gedacht und dafür gibts ja die neuen Blöcke - damit man JSON nicht so umständlich zusammenbauen muss.

-
@ralla66 sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
Post geht jetzt zu den Hoymiles Wechselrichtern raus

Okay, aber warum als String? Normalerweise müsstest Du das auch als Objekt definieren können mit den verschiedenen Eigenschaften (der HTTP-Block macht dann ja JSON draus im POST-Request). So ist der Block zumindest gedacht und dafür gibts ja die neuen Blöcke - damit man JSON nicht so umständlich zusammenbauen muss.

teste ich mal mit Objekt, davor gehört ja noch data= als string.
Zur Info zu Leerfeld Post, Wireshark zeigte hier die Lösung.
curl -u "admin:blablabla" http://192.168.2.65/api/limit/status
wird als Get gesendet, zumindest aus Windows heraus. -
teste ich mal mit Objekt, davor gehört ja noch data= als string.
Zur Info zu Leerfeld Post, Wireshark zeigte hier die Lösung.
curl -u "admin:blablabla" http://192.168.2.65/api/limit/status
wird als Get gesendet, zumindest aus Windows heraus.@ralla66 sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
davor gehört ja noch data= als string.
Ziemlich komisches Format... Aber auch dann würde ich das JSON nicht manuell zusammenbauen. Gerade, wenn man die Parameter dynamisch setzen möchte.

PS: Warum eigentlich die Downvotes hier? @DOUBLED @JWERLSDF
Wenn ihr Schwierigkeiten mit der Beta oder den neuen Blöcken habt: Einfach melden. Einfach nur ein Downvote auf einem Post hilft euch auch nicht weiter...
-
@ralla66 sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
davor gehört ja noch data= als string.
Ziemlich komisches Format... Aber auch dann würde ich das JSON nicht manuell zusammenbauen. Gerade, wenn man die Parameter dynamisch setzen möchte.

PS: Warum eigentlich die Downvotes hier? @DOUBLED @JWERLSDF
Wenn ihr Schwierigkeiten mit der Beta oder den neuen Blöcken habt: Einfach melden. Einfach nur ein Downvote auf einem Post hilft euch auch nicht weiter...
dein Format hat ja auch den Vorteil der Übersichtlichkeit.
Sehr gute Arbeit die du da machst.
Top ! -
@haus-automatisierung
Ich habe überall 0 ms eingetragen und jetzt bekomme ich wieder den Fehler 2000ms timeout obwohl ich 2000 nicht eingestellt habe.@jwerlsdf sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
Ich habe überall 0 ms eingetragen und jetzt bekomme ich wieder den Fehler 2000ms timeout obwohl ich 2000 nicht eingestellt habe.
Bitte mit 7.10.1 testen. Der generierte Blockly-Code hat immer einen Wert
> 0generiert. Generell ist es natürlich nicht empfehlenswert ohne Timeout zu arbeiten. Das ist ja auch ein ziemlich spezieller Fall, dass Du erst einen Response bekommst wenn die Datei komplett abgespielt wurde. -
@jwerlsdf sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
Ich habe überall 0 ms eingetragen und jetzt bekomme ich wieder den Fehler 2000ms timeout obwohl ich 2000 nicht eingestellt habe.
Bitte mit 7.10.1 testen. Der generierte Blockly-Code hat immer einen Wert
> 0generiert. Generell ist es natürlich nicht empfehlenswert ohne Timeout zu arbeiten. Das ist ja auch ein ziemlich spezieller Fall, dass Du erst einen Response bekommst wenn die Datei komplett abgespielt wurde.@haus-automatisierung Ist in 7.10.x auch schon was zu dem CRON Stop Problem drin?
Muss zZt aufpassen, dass ich solche Skripte nicht mit 7.9.4 ändere damit sie weiter funktionieren. -
@haus-automatisierung Ist in 7.10.x auch schon was zu dem CRON Stop Problem drin?
Muss zZt aufpassen, dass ich solche Skripte nicht mit 7.9.4 ändere damit sie weiter funktionieren.@diginix sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
@haus-automatisierung Ist in 7.10.x auch schon was zu dem CRON Stop Problem drin?
Ja, hatte bei der Validierung der Eingänge zuviel kopiert und danach nicht alle Trigger-Blöcke getestet, ... sorry :(
EDIT: Aus irgend einem Grund laufen nicht alle Tests durch... https://github.com/ioBroker/ioBroker.javascript/actions/runs/8387799827
Keine Ahnung was da auf einmal das Problem ist. Sind immer andere Versionen auf immer anderen Betriebssystemen. Die Suche kann also dauern, ...
-
@diginix sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
@haus-automatisierung Ist in 7.10.x auch schon was zu dem CRON Stop Problem drin?
Ja, hatte bei der Validierung der Eingänge zuviel kopiert und danach nicht alle Trigger-Blöcke getestet, ... sorry :(
EDIT: Aus irgend einem Grund laufen nicht alle Tests durch... https://github.com/ioBroker/ioBroker.javascript/actions/runs/8387799827
Keine Ahnung was da auf einmal das Problem ist. Sind immer andere Versionen auf immer anderen Betriebssystemen. Die Suche kann also dauern, ...
nur string läuft
ohne data= code 1002, mag der Empfänger nicht.
mit data= code 1004
-
nur string läuft
ohne data= code 1002, mag der Empfänger nicht.
mit data= code 1004
@ralla66 Da hast Du aber einen Block weggelassen :)
-
@ralla66 Da hast Du aber einen Block weggelassen :)
der Typ vorm Bildschirm, aua, läuft :-)
Ein Traum für jeden Hoymiles Besitzer.
Steuerung pur. -
@diginix sagte in JavaScript 7.9.0 - Neue Objekt- und HTTP-Bausteine:
@haus-automatisierung Ist in 7.10.x auch schon was zu dem CRON Stop Problem drin?
Ja, hatte bei der Validierung der Eingänge zuviel kopiert und danach nicht alle Trigger-Blöcke getestet, ... sorry :(
EDIT: Aus irgend einem Grund laufen nicht alle Tests durch... https://github.com/ioBroker/ioBroker.javascript/actions/runs/8387799827
Keine Ahnung was da auf einmal das Problem ist. Sind immer andere Versionen auf immer anderen Betriebssystemen. Die Suche kann also dauern, ...
@haus-automatisierung Ich hab erstmal die von GIT installiert und ein Schnelltest mit CRON funktionierte.