NEWS
Luft-Messdaten von OpenSenseMap auslesen
-
@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?
-
@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?
-
@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.
-
@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:
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.
-
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); } -
@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] -
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: -
@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).
-
Nachdem @paul53 wie befürchtet das Skript komlett zerlegt und neu zusammengesetzt hat hier jetzt die aktuelle Version.
Vielen Dank nochmals an @paul53 - ich habe viel gelernt! (Hoffentlich behalte ich das auch).
Änderungen in v0.3.1:
- auslesen der Daten auf JSON-Attribute umgestellt
- Station erhält neben der ID auch den Klarnamen
- dieser Klarname kann editiert werden
- Auswertung erfolgt exakt nach Anzahl Sensoren
- keine Fehlermeldungen wegen "Leerlauf" der Parserroutine mehr
-
Nachdem @paul53 wie befürchtet das Skript komlett zerlegt und neu zusammengesetzt hat hier jetzt die aktuelle Version.
Vielen Dank nochmals an @paul53 - ich habe viel gelernt! (Hoffentlich behalte ich das auch).
Änderungen in v0.3.1:
- auslesen der Daten auf JSON-Attribute umgestellt
- Station erhält neben der ID auch den Klarnamen
- dieser Klarname kann editiert werden
- Auswertung erfolgt exakt nach Anzahl Sensoren
- keine Fehlermeldungen wegen "Leerlauf" der Parserroutine mehr
-
@Homoran
setze Name auf Attribut "name" von obj
ist überflüssig, da die globale Variable Name nirgends verwendet wird.@paul53
Danke - ich muss da eh nochmal ran, weil der BME280 jetzt wieder den Luftdruck in Pa angibtDas stammt noch aus meine Versuchen mit dem setObject - da hatte ich es verwendet
-
@paul53
Danke - ich muss da eh nochmal ran, weil der BME280 jetzt wieder den Luftdruck in Pa angibtDas stammt noch aus meine Versuchen mit dem setObject - da hatte ich es verwendet
@Homoran sagte in Luft-Messdaten von OpenSenseMap auslesen:
ich muss da eh nochmal ran, weil der BME280 jetzt wieder den Luftdruck in Pa angibt
Wollte wieder eine Ersetzung einfügen, aber jetzt direkt meine json-"Kenntnisse" umsetzen.
Direkt bei der zweiten Zeile bin ich ins Schleudern gekommen.
Ich fürchte ich kann hier nicht direkt mit den JSON-Daten arbeiten und muss doch auf Variable ausweichen.
Das sähe dann (wenn ich da jetzt keine Fehler reingebracht habe) so aus:

Oder gibt's da doch eine Möglichkeit JSON-Inhalte zu manipulieren
-
@Homoran sagte in Luft-Messdaten von OpenSenseMap auslesen:
ich muss da eh nochmal ran, weil der BME280 jetzt wieder den Luftdruck in Pa angibt
Wollte wieder eine Ersetzung einfügen, aber jetzt direkt meine json-"Kenntnisse" umsetzen.
Direkt bei der zweiten Zeile bin ich ins Schleudern gekommen.
Ich fürchte ich kann hier nicht direkt mit den JSON-Daten arbeiten und muss doch auf Variable ausweichen.
Das sähe dann (wenn ich da jetzt keine Fehler reingebracht habe) so aus:

Oder gibt's da doch eine Möglichkeit JSON-Inhalte zu manipulieren
-
@paul53 Wo zauberst du immer nur die Lösungen her, auf die kein "normaler" Mensch kommt.
Meine Version funktioniert jetzt und ich habe sogar nicht auf title=Luftdruck sondern auf unit=Pa geprüft.
Denke das ist sauberer.Werde deine Vorschlag trotzdem umsetzen, sieht einfach "runder" aus.
-
@paul53 Wo zauberst du immer nur die Lösungen her, auf die kein "normaler" Mensch kommt.
Meine Version funktioniert jetzt und ich habe sogar nicht auf title=Luftdruck sondern auf unit=Pa geprüft.
Denke das ist sauberer.Werde deine Vorschlag trotzdem umsetzen, sieht einfach "runder" aus.
-
@paul53
Aber mit dem prüfe-Baustein gibt es nicht die Möglichkeit noch weitere Fälle abzufangen wie mit falls...sonstfalls...Oder habe ich da wieder etwas übersehen?
