NEWS
webseite auslesen und in Datenpunkte darstellen json
-
Ist ja lieb und richtig was ihr da macht, aber wenn der TE schreibt:
@LukyLuke sagte in webseite auslesen und in Datenpunkte darstellen json:
Leider habe ich von javascript usw. fast keine Ahnung.
erscheint mir das wenig hilfreich.
Habt Ihr zugriff auf Blockly?
dann macht doch bitte einen Screenshot von dem entsprechenden Baustein.
Auf dem Tablet geht das leider nicht -
@Homoran
ich würde ja auch ein javascript erstellen. Nur fehlt mir sämtliches Wissen dazu. Leider.var Tor =JSON.parse(getState('https://svr39.supla.org/direct/**************/read?format=json').val); log (Tor.connected); log (Tor.hi); setState('TorConnected',Tor.connected); setState('TorHi',Tor.hi);
Das klappt noch nicht so richtig.
5.1.2021, 11:08:00.710 [error]: javascript.0 (3658) script.js.common.Tor_neu: TypeError: Cannot read property 'connected' of null 5.1.2021, 11:08:00.712 [error]: javascript.0 (3658) at script.js.common.Tor_neu:3:10 5.1.2021, 11:08:00.712 [error]: javascript.0 (3658) at script.js.common.Tor_neu:8:3
-
@LukyLuke sagte in webseite auslesen und in Datenpunkte darstellen json:
Nur fehlt mir sämtliches Wissen dazu. Leider.
mir leider auch, aber mit getstate kannst du keine Website auslesen sondern nur den bisherigen Datenpunkt, in den du das JSON geschrieben hast
-
@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. -
@bahnuhr In dem Datenpunkt Torzustand steht doch ein String drin,oder nicht ?
-
-
@LukyLuke sagte:
möchte ich die zwei Variablen in zwei Datenpunkte schreiben.
-
@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.
-
@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); }) }