NEWS
[gelöst] json abfragen - Objekte erstellen
-
Mit EINEM Datenpunkt hab ich gemeint, dass ich dann weiter arbeiten kann, bzw lerne wie man quasi Datenpunkte erstellt. Natürlich ist das Ziel immer noch, alle 24 DPs zu erstellen jeweils mit der korrekten Zahl.
Warum ich eine neue Lösung suche ist die Warnung im Log: "adapter.objects.getObjectList is deprecated, and will be removed in the future. Please use adapter.getObjectList/Async. Report this to Developer!"
-
zuerst einmal: Danke allen.
Dein ewig langer Post unter:
@mickym sagte in json abfragen - Objekte erstellen:
Fangen wir mal an:
...hat mir schon geholfen, und eigentlich nicht erschreckt. Aber das konnte @Homoran natürlich nicht wissen. Ich finde beide Ansätze durchaus interessant und für mich als möglichkeit zum Lernen durchaus okay. Auch wenn ich jetzt noch nicht alles verstehe, werde ich den Beitrag in 1 Woche, 3 Monaten oder einem Jahr erneut lesen und dann "achsooo, das haben die gemeint" sagen.
Nochmal kurz zu mir: Ich habe ein ausgesprochen gutes Excel wissen, und hab schon die verzweigtesten und verschachtelsten Excel Formeln erstellt. Am logischem denken wirds bei mir nicht scheitern. Auch hab ich aktuell die logiken meiner smarten Wohnung mittels Tasker (Android) erstellt und läuft wie es soll. Aber auch das natürlich mit Unterstützung.
Demnächst steht der Umzug ins neue Haus an, und dafür hab ich mir den Raspberry mit ioBroker zugelegt, um die Steuerung auf eben diesen umzustellen.Da ich von javascript null Ahnung hab, und Blockly optisch mehr zusagt als nodered, würde ich gerne den weg mit Blockly gehen, falls das dann möglich ist.
Am liebsten hätte ich eigentlich ein "fast" fertiges blockly-skript welches ich dann importieren und studieren kann, um daraus zu lernen.
Als erste Frage: Welchen Block nimmt man um die json Daten von meiner URL in EINEN Datenpunkt (nennt man das überhaupt so?) zu bekommen. @Homoran Du hast ja im Screenshot die Daten als "Text" eingefügt.
Vielen Dank schonmal.
@rtwl ich hab da mal was vorbereitet:

Der Zeitplan fragt jede Minute ab.
Zum testen kannst du den request aus dem Trigger (Zeitplan) herauslösen. Dann startet es nur beim Speichern.Die Variable result musst du selber anlegen
der debug Baustein ist immer sehr hilfreich und würde dir hoffentlich das Ergebnis im logfenster unter der Arbeitsfläche des Blocklys anzeigen.Wenn du dann unter 0_Userdata.0 in einer sinnvollen Struktur deine(n) Datenpunkt(e) angelegt hast, kannst du den steuere-Block aktivieren und die ID dieses Datrenpunktes dort eintragen. Dann wird das JSON dort hereingeschriebn.
Viel Basics!
bei Frage - fragen! -
Vielen Dank, das hab ich schonmal hinbekommen.
Nur jetzt mit deinem Abschreck-Beispiel oben in der Schleife keine Variable/Text befüllen, sondern einen Datenpunkt wird nicht möglich sein, oder?
Zumindest sehe ich keine Möglichkeit die Datenpunkte als Variable zu definieren, so dass beim Datenpunkt "0_userdata.0.Temperaturwerte.Channel0.temperature" Der letzte Ordner "Channel0" in der Schleife als Variable genommen wird, und ebenso der DP "temperature" oder "humidity".Alle 24 DP ohne schleife zu befüllen, sollte damit möglich sein, aber um es Übersichtlicher zu haben wäre eine Schleife natürlich sinnvoll.
-
Vielen Dank, das hab ich schonmal hinbekommen.
Nur jetzt mit deinem Abschreck-Beispiel oben in der Schleife keine Variable/Text befüllen, sondern einen Datenpunkt wird nicht möglich sein, oder?
Zumindest sehe ich keine Möglichkeit die Datenpunkte als Variable zu definieren, so dass beim Datenpunkt "0_userdata.0.Temperaturwerte.Channel0.temperature" Der letzte Ordner "Channel0" in der Schleife als Variable genommen wird, und ebenso der DP "temperature" oder "humidity".Alle 24 DP ohne schleife zu befüllen, sollte damit möglich sein, aber um es Übersichtlicher zu haben wäre eine Schleife natürlich sinnvoll.
@rtwl sagte in json abfragen - Objekte erstellen:
sondern einen Datenpunkt wird nicht möglich sein, oder?
doch, aber dafür wollte ich die chid verwenden, die leider 3x 0 ist
da muss ich mir noch was einfallen lassen
mit channel(x) müsste es gehen -
Vielen Dank, das hab ich schonmal hinbekommen.
Nur jetzt mit deinem Abschreck-Beispiel oben in der Schleife keine Variable/Text befüllen, sondern einen Datenpunkt wird nicht möglich sein, oder?
Zumindest sehe ich keine Möglichkeit die Datenpunkte als Variable zu definieren, so dass beim Datenpunkt "0_userdata.0.Temperaturwerte.Channel0.temperature" Der letzte Ordner "Channel0" in der Schleife als Variable genommen wird, und ebenso der DP "temperature" oder "humidity".Alle 24 DP ohne schleife zu befüllen, sollte damit möglich sein, aber um es Übersichtlicher zu haben wäre eine Schleife natürlich sinnvoll.
@rtwl sagte: Datenpunkt "0_userdata.0.Temperaturwerte.Channel0.temperature"
Wenn alle 24 Datenpunkte nach diesem Schema für Channel0 bis Channel11 erstellt wurden, und
@rtwl sagte in json abfragen - Objekte erstellen:
wäre eine Schleife natürlich sinnvoll.
versuche es mal so:

-
@rtwl sagte in json abfragen - Objekte erstellen:
sondern einen Datenpunkt wird nicht möglich sein, oder?
doch, aber dafür wollte ich die chid verwenden, die leider 3x 0 ist
da muss ich mir noch was einfallen lassen
mit channel(x) müsste es gehenWenn die chid 0 ist, kann man diese Channel´s ignorieren, da gibt es dann keinen Sensor. Es wird auch nie eine Channel geben mit identischer chid. Was aber sein wird ist, dass einmal ein neuer Sensor hinzu kommt, der dann eine leeren Platz einnimmt. Aber wie gesagt, da wird dann eine neue/eigene chid kommen.
Theoretisch können sich die chid´s nach Batterie wechsel ändern. Die Werte sollten also nicht fest definiert sein im skript. -
@rtwl sagte: Datenpunkt "0_userdata.0.Temperaturwerte.Channel0.temperature"
Wenn alle 24 Datenpunkte nach diesem Schema für Channel0 bis Channel11 erstellt wurden, und
@rtwl sagte in json abfragen - Objekte erstellen:
wäre eine Schleife natürlich sinnvoll.
versuche es mal so:

-
Wenn die chid 0 ist, kann man diese Channel´s ignorieren, da gibt es dann keinen Sensor. Es wird auch nie eine Channel geben mit identischer chid. Was aber sein wird ist, dass einmal ein neuer Sensor hinzu kommt, der dann eine leeren Platz einnimmt. Aber wie gesagt, da wird dann eine neue/eigene chid kommen.
Theoretisch können sich die chid´s nach Batterie wechsel ändern. Die Werte sollten also nicht fest definiert sein im skript. -
@homoran
Zuerst dachte ich eh, dass die Antwort von dir kam :)
Der Dank geht natürlich an @paul53Nein, wie es aktuell aussieht wird sich da nichts ändern. Und wenn dann wird die Anzahl der Channels erhöht. Davon geh ich aber nicht aus. Die Reihenfolge wird sich auch nicht ändern.
Die json sieht schon seit einigen Jahren so aus. -
@homoran
Zuerst dachte ich eh, dass die Antwort von dir kam :)
Der Dank geht natürlich an @paul53Nein, wie es aktuell aussieht wird sich da nichts ändern. Und wenn dann wird die Anzahl der Channels erhöht. Davon geh ich aber nicht aus. Die Reihenfolge wird sich auch nicht ändern.
Die json sieht schon seit einigen Jahren so aus.@rtwl sagte in json abfragen - Objekte erstellen:
Und wenn dann wird die Anzahl der Channels erhöht.
wenn sich diese Anzahl erhöht, und neue Sensoren immer hinten Angehängt werden, musst du nur die anzahl i bis 11 erhöhen
-
@rtwl sagte in json abfragen - Objekte erstellen:
Und wenn dann wird die Anzahl der Channels erhöht.
wenn sich diese Anzahl erhöht, und neue Sensoren immer hinten Angehängt werden, musst du nur die anzahl i bis 11 erhöhen
@homoran
Jap, das war mir klar ;) aber danke natürlich.Wie ihr euch vorstellen könnt, sind die Channel0-11 jeweils Räume/Orte an denen die Sensoren stehen. Jetzt ist es natürlich möglich sich zu merken welcher Channel zu welchem Raum gehört bzw beim späteren implementieren in der VIS kann man da auch den "Schummelzettel" verwenden.
Aber wenn ich mit meiner MS-Excel Hirnhälfte denke, würde ich mir eine Tabelle anlegen und die Channel0-11 in den Raumnamen umwandeln.
Könnte man das auch machen. So in der Art: Wenn i = 2 dann nimm statt "Channel2" das Wort "Wohnzimmer" - Diese Zuordnung/Liste der Channels/Räume müsste man aber wo speichern/abrufen können.Oder bin ich da schon zu weit und wäre nur nice to have?
-
@homoran
Jap, das war mir klar ;) aber danke natürlich.Wie ihr euch vorstellen könnt, sind die Channel0-11 jeweils Räume/Orte an denen die Sensoren stehen. Jetzt ist es natürlich möglich sich zu merken welcher Channel zu welchem Raum gehört bzw beim späteren implementieren in der VIS kann man da auch den "Schummelzettel" verwenden.
Aber wenn ich mit meiner MS-Excel Hirnhälfte denke, würde ich mir eine Tabelle anlegen und die Channel0-11 in den Raumnamen umwandeln.
Könnte man das auch machen. So in der Art: Wenn i = 2 dann nimm statt "Channel2" das Wort "Wohnzimmer" - Diese Zuordnung/Liste der Channels/Räume müsste man aber wo speichern/abrufen können.Oder bin ich da schon zu weit und wäre nur nice to have?
@rtwl sagte in json abfragen - Objekte erstellen:
Könnte man das auch machen. So in der Art: Wenn i = 2 dann nimm statt "Channel2" das Wort "Wohnzimmer" - Diese Zuordnung/Liste der Channels/Räume müsste man aber wo speichern/abrufen können.
jepp, es geht alles. beliebig komplex
da müsste man mit dem case Befehl Arbeiten.
bin aber schon länger nicht mehr am PC, derxBlock müsste etwas mit Fall heißen. hab ihn aber selber noch nie verwendet. -
@homoran
Jap, das war mir klar ;) aber danke natürlich.Wie ihr euch vorstellen könnt, sind die Channel0-11 jeweils Räume/Orte an denen die Sensoren stehen. Jetzt ist es natürlich möglich sich zu merken welcher Channel zu welchem Raum gehört bzw beim späteren implementieren in der VIS kann man da auch den "Schummelzettel" verwenden.
Aber wenn ich mit meiner MS-Excel Hirnhälfte denke, würde ich mir eine Tabelle anlegen und die Channel0-11 in den Raumnamen umwandeln.
Könnte man das auch machen. So in der Art: Wenn i = 2 dann nimm statt "Channel2" das Wort "Wohnzimmer" - Diese Zuordnung/Liste der Channels/Räume müsste man aber wo speichern/abrufen können.Oder bin ich da schon zu weit und wäre nur nice to have?
@rtwl sagte: sind die Channel0-11 jeweils Räume/Orte
Müssen die Orte in der ID enthalten sein? Den Datenpunktnamen kann man beliebig vergeben. Außerdem gibt es noch die Aufzählung "Räume"(enum.rooms), die man den Datenpunkten zuordnen kann.
-
Ich denke ich hab eine Lösung gefunden. Nach dem Umzug ins Haus soll es dann relativ einfach gehen die Testumgebung jetzt dann anzupassen.
Ich hab es jetzt mal so gelöst.

@paul53
Was genau meinst du mit "Räume"(enum.rooms)
Wo kann ich da was definieren? -
Ich denke ich hab eine Lösung gefunden. Nach dem Umzug ins Haus soll es dann relativ einfach gehen die Testumgebung jetzt dann anzupassen.
Ich hab es jetzt mal so gelöst.

@paul53
Was genau meinst du mit "Räume"(enum.rooms)
Wo kann ich da was definieren?@rtwl sagte: Was genau meinst du mit "Räume"(enum.rooms)
Im Tab "Aufzählungen" gibt es bereits vorgegebene Räume, die man um eigene Räume erweitern kann.

Den Räumen kann man jeweils die zwei Datenpunkte zuweisen. Oder man weist im Tab "Objekte" den Datenpunkten den zugehörigen Ort(Zimmer) zu.

-
@rtwl sagte: Was genau meinst du mit "Räume"(enum.rooms)
Im Tab "Aufzählungen" gibt es bereits vorgegebene Räume, die man um eigene Räume erweitern kann.

Den Räumen kann man jeweils die zwei Datenpunkte zuweisen. Oder man weist im Tab "Objekte" den Datenpunkten den zugehörigen Ort(Zimmer) zu.

-
@paul53
ah, sehr cool. Hab schonmal auf "Aufzählungen" geklickt. Aber da ist alles leer. Also nix vordefiniertes drinnen. Daher hab ich mich damit noch nicht beschäftigt. wusste nicht was ich da machen kann.
danke, und verzeiht die Anfänger fragen@rtwl sagte in json abfragen - Objekte erstellen:
Aber da ist alles leer. Also nix vordefiniertes drinnen
Dann hast du kein Homematic :-)
-
@rtwl sagte in json abfragen - Objekte erstellen:
Aber da ist alles leer. Also nix vordefiniertes drinnen
Dann hast du kein Homematic :-)
-
@homoran sagte: Dann hast du kein Homematic
Ich wusste gar nicht, dass die der HM-Rega-Adapter erzeugt. Das auch noch mehrsprachig?
@paul53 sagte:
Ich wusste gar nicht, dass die der HM-Rega-Adapter erzeugt. Das auch noch mehrsprachig?
ich gehe mal davon aus, bzw, bin immer davon ausgegangen, dass die Aufzählungen aus der HM kommen.
Ob diese jetzt über ein translate-Modul beim Einlesen direkt mehrsprachig angelegt werden, wäre natürlich möglich.Aber wie ich dich kenne hast du bereits in den Objektdaten nachgesehen und die Übersetzung ist native
-
@paul53 sagte:
Ich wusste gar nicht, dass die der HM-Rega-Adapter erzeugt. Das auch noch mehrsprachig?
ich gehe mal davon aus, bzw, bin immer davon ausgegangen, dass die Aufzählungen aus der HM kommen.
Ob diese jetzt über ein translate-Modul beim Einlesen direkt mehrsprachig angelegt werden, wäre natürlich möglich.Aber wie ich dich kenne hast du bereits in den Objektdaten nachgesehen und die Übersetzung ist native