NEWS
webseite auslesen und in Datenpunkte darstellen json
-
@LukyLuke
TorConnected und TorHi vorher als Objekt anlegenvar Tor =JSON.parse(getState('Torzustand').val); log (Tor.connected); log (Tor.hi); setState('TorConnected',Tor.connected); setState('TorHi',Tor.hi);@Gargano sagte in webseite auslesen und in Datenpunkte darstellen json:
@LukyLuke
TorConnected und TorHi vorher als Objekt anlegenvar Tor =JSON.parse(getState('Torzustand').val); log (Tor.connected); log (Tor.hi); setState('TorConnected',Tor.connected); setState('TorHi',Tor.hi);Bei mir steht stringify !
Warum nimmst du parse ? -
@Gargano sagte in webseite auslesen und in Datenpunkte darstellen json:
@LukyLuke
TorConnected und TorHi vorher als Objekt anlegenvar Tor =JSON.parse(getState('Torzustand').val); log (Tor.connected); log (Tor.hi); setState('TorConnected',Tor.connected); setState('TorHi',Tor.hi);Bei mir steht stringify !
Warum nimmst du parse ? -
@bahnuhr Ein JSON.stringify wandelt ein JSON Objekt in einen String. JSON.parse macht dies umgekehrt.
@Gargano sagte in webseite auslesen und in Datenpunkte darstellen json:
@bahnuhr Ein JSON.stringify wandelt ein JSON Objekt in einen String. JSON.parse macht dies umgekehrt.
Genau.
Und mit parse klappt es nicht. -
@Gargano sagte in webseite auslesen und in Datenpunkte darstellen json:
@bahnuhr Ein JSON.stringify wandelt ein JSON Objekt in einen String. JSON.parse macht dies umgekehrt.
Genau.
Und mit parse klappt es nicht. -
-
Ich komme nicht weiter. Folgendes habe ich zum Ziel:
- per webrequest hole ich die Zustandsdaten im json Format meines Torantriebes ab: klappt
{"connected":true,"hi":true}- jetzt möchte ich die zwei Variablen in zwei Datenpunkte schreiben. Das bekomme ich nicht hin. Ich erhalte immer nur die ganze Zeile im State

- den Datenpunkt schreibe ich aus einem blockly script via result

- muss ich result jetzt noch irgendwie parsen?
Ich komm einfach nicht weiter momentan. Leider habe ich von javascript usw. fast keine Ahnung.
-
@paul53
@bahnuhr
@Gargano
@HomoranDanke, das klappt so. Ich habe die Datenpunkte TorConnected und TorHi angelegt und dann das blockly von Paul53 übernommen. Die Zustände werden jetzt korrekt angezeigt.
Hoffentlich versteh ich irgendwann wie man sowas als script richtig erstellt.Fall gelöst.
Nochmals vielen Dank!! -
@paul53
@bahnuhr
@Gargano
@HomoranDanke, das klappt so. Ich habe die Datenpunkte TorConnected und TorHi angelegt und dann das blockly von Paul53 übernommen. Die Zustände werden jetzt korrekt angezeigt.
Hoffentlich versteh ich irgendwann wie man sowas als script richtig erstellt.Fall gelöst.
Nochmals vielen Dank!! -
@LukyLuke sagte:
Fall gelöst.
So wird die Abfrage aber nur einmal bei Skript-Start ausgeführt. Für eine zyklische Abfrage sollte request innerhalb eines Zeitplans ausgeführt werden.
Da hast du recht. Ich überlege noch wie ich das am sinnvollsten regele. Das Tor wird von mehreren Funksendern, Handys und zukünftig auch von der Doorstation im Haus bedient.
Entweder ich lasse das im Intervall abfragen oder immer nur bei bedarf wenn z.B. das Tor per webrequest bedient werden soll.Das besondere ist das ich auch noch die Teilöffnung mit berücksichtigen möchte. Das Tor öffnet dann nur etwa 1 m.
-
@paul53
@bahnuhr
@Gargano
@HomoranDanke, das klappt so. Ich habe die Datenpunkte TorConnected und TorHi angelegt und dann das blockly von Paul53 übernommen. Die Zustände werden jetzt korrekt angezeigt.
Hoffentlich versteh ich irgendwann wie man sowas als script richtig erstellt.Fall gelöst.
Nochmals vielen Dank!!@LukyLuke Hier mal das Script zum Anschauen und evtl. Ausprobieren. Liest jede Minute den Zustand des Tores ein und speichert den Zustand in '0_userdata.0.Tor.Connected' und '0_userdata.0.Tor.Hi'
Vorher das npm Module axios in de JS Instanz eintragen

const prefix = '0_userdata.0.'; //'javascript.0.'; // const idTorConnected = prefix+"Tor.Connected"; const idTorHi = prefix+"Tor.Hi"; const creatStateList = [ {name :idTorConnected, type:"boolean", role : "value"}, {name :idTorHi, type:"boolean", role : "value"} ] async function createState (item){ await createStateAsync(item.name, { type: item.type, min: 0, def: 0, role: item.role }); } async function makeStatList() { creatStateList.forEach (function(item) { createState(item); }); } makeStatList(); const axios = require('axios'); const url = 'https://svr39.supla.org/direct/**************/read?format=json'; // mySchedule im JS Editor mit dem Uhrsymbol oben rechts erstellen var mySchedule ='* * * * *'; // jede Minute schedule(mySchedule, getTor); function getTor() { axios.get(url) .then(function (response) { // handle success let tor = response.data; console.log ('JSON '+JSON.stringify(tor)); setState(idTorConnected, tor.connected); setState(idTorHi, tor.hi); }) .catch(function (error) { // handle error console.log(error); }) }
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden
