NEWS
Luft-Messdaten von OpenSenseMap auslesen
-
@Homoran sagte:
name kommt eigentlich nur bei der Station vor, du nutzst es aber doch auch bei den Sensoren
Die globale Variable Name enthält den Stationsnamen. Die lokale Variable Name (Funktionsparameter) enthält das Attribut "title" des Sensors.
-
@Homoran sagte :
zusätzlich zur ID
Ich weiß nämlich nicht ob der Name eindeutig istDiese Modifikation der ID sollte nicht schwer fallen ?
-
@paul53
Nicht dass ich mich schon wieder unpräzise ausgedrückt habe (ich weiß doch was ich meine )Es soll so aussehen:
Bisher wird die ID nicht einzeln als DP angelegt sondern nur als "Pfad" zum Sensor.
Außerdem soll der Name Editirbar sein.
Einige Stationen heißen z.B. "Station" - das hilft keinem -
@Homoran sagte:
Außerdem soll der Name Editirbar sein.
Habe ich Dich falsch verstanden ? Du möchtest den Stationsnamen im Namen des Datenpunktes haben und nicht in der ID ?
-
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
@Homoran sagte:
Außerdem soll der Name Editirbar sein.
Habe ich Dich falsch verstanden ? Du möchtest den Stationsnamen im Namen des Datenpunktes haben und nicht in der ID ?
Ja!
-
@Homoran
Also etwa so ? -
@paul53 weiss nicht - den part habe ich noch nicht komplett intus - sorry!
Das soll herauskommen:
MAP1 ist editierbar!
So habe ich es "gelöst":
Und dabei die Funktion Stations-DP anlegen mit
createState('Luftdaten.' + Station, {type:'device', read:true, write:true, name:Name});
im Vorfeld verwendet -
@Homoran
Ach, Du hast einen zusätzlichen Datenpunkt angelegt. type = 'device' ist unzulässig ! -
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
@Homoran
type = 'device' ist unzulässig !Ja - das waren noch die Knochen von meinem ersten Versuch - das Thema hatten wir ja schon.
Muss ich noch ändernEDIT: cool ist ein Bool geworden
Ach, Du hast einen zusätzlichen Datenpunkt angelegt.
geht es anders?
-
@Homoran sagte:
geht es anders?
Nicht mit createState(). Ich würde die Funktion erzeugeZahlDP() mit verwenden.
-
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
Ich würde die Funktion erzeugeZahlDP() mit verwenden.
ok - das ist dann eine Funktion weniger un Name ist da ja auch RW
Ich hätte das aus "Strukturgründen" deshalb ja lieber als channel gehabt.
Und dummy kommt dann in den Pfad bei den Sensor-States statt Station?
-
@Homoran sagte:
Und dummy kommt dann in den Pfad bei den Sensor-States statt Station?
Nein, dummy ist das, was der Bezeichner sagt. Die Variable wird nur benötigt, weil die Funktion einen Wert zurück gibt, der an dieser Stelle nicht benötigt wird.
-
@Homoran sagte:
aus "Strukturgründen" deshalb ja lieber als channel gehabt.
Dann musst Du einen Javascript-Funktion mit setObject() verwenden.
-
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
@Homoran sagte:
aus "Strukturgründen" deshalb ja lieber als channel gehabt.
Dann musst Du einen Javascript-Funktion mit setObject() verwenden.
Das lasse ich lieber wenn das so gefährlich ist.
Du überraschst mich immer wieder.
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
Die Variable wird nur benötigt, weil die Funktion einen Wert zurück gibt,
Das ist doch Hokuspokus
Bin mal gespannt -
Natürlich hat es geklappt.
Danke @paul53
Aber bis ich das verdaut habe wird es noch etwas dauern@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
Dann musst Du einen Javascript-Funktion mit setObject() verwenden.
Wenn ich ganz mutig bin verwende ich meine alte StationDP-Anlegen funktion und tausche nur setState gegen setObject aus.
-
@Homoran sagte:
tausche nur setState gegen setObject aus.
Genau das ist die Gefahr !!
Die Funktion erzeugeChannel(id, Name) müsste etwa so aussehen:id = 'javascript.' + instance + '.' + id; if(!existsObject(id)) { let obj = {}; obj.type = 'channel'; obj.common = {}; obj.common.name = Name; setObject(id, obj); }
-
Sorry @paul53
ich kapiere das nicht ganz.
Du prüfst ob die Id bereits existiert. Wenn nicht, legt er los - klar soweit!
Die ID wäre ja die Stationsnummer
Muss ich da vorher eine ID übergeben = Station? - klappt nichtDen "Pfad" baust du ja im letzten Schritt komplett auf.
Name ist doch bereits die vorhandene Variable - muss ich da auch noch was übergeben?Ich habe alle(?) Versionen mit und ohne Übergabe versucht, auch mit Text aus "Luftdaten."+Station
bekomme immer
javascript.0 2020-01-02 16:53:29.576 error (4615) setForeignObject: try to set null object for [object Object]
-
@Homoran
Sorry, es wird eine falsche ID geprüft. Habe es oben korrigiert.An die Funktion muss die Teil-ID und der Name übergeben werden.
-
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
Sorry, es wird eine falsche ID geprüft.
kein Problem - das lernt
@paul53 sagte in Luft-Messdaten von OpenSenseMap auslesen:
An die Funktion muss die Teil-ID und der Name übergeben werden.
Hatte ich fast so, ich hatte lediglich statt Attribut name... einfach Name genommen.
Da war doch was mit global und local :oops: -
@Homoran sagte:
das lernt
Ja, woran man sieht, dass der Umgang mit setObject() nicht trivial ist.
@Homoran sagte in Luft-Messdaten von OpenSenseMap auslesen:
Da war doch was mit global und local :oops:
Die Funktionsparameter id und Name und die intern deklarierte Variable obj sind lokal (nur innerhalb der Funktion gültig).