Seite 1 von 2

Feinstaubsensor

Verfasst: 23. Sep 2019 15:29
von gerrybauer
Hallo ich bin auch neu hier in diesem Forum
Mein Problem: Habe einen Feinstaubsensor aus dem Projekt https://maps.luftdaten.info
und möchte jetzt die Daten meines Sensors ID581821 in meinem Openhab Sitemaps unter "draußen" darstellen.
das HTTP-Binding ist installiert
Bisher habe ich keine vernüftige und auch Nachvollziehbare Anleitung im Netz gefunden.
Wie muss ich vorgehen,
- muss etwas ?? unter dem LW things gespeichert werden.
- was muss in den Ordner items...
- wie sieht mein Eintrag in meinem Sitemap aus?, wenn z.B. nur die Temp und die Luftfeuchtigkeit dargestellt werden sollen??

Wer kann mir bitte dabei weiterhelfen.

Vielen Dank im voraus

gerrybauer / DG1BOR

Re: Feinstaubsensor

Verfasst: 23. Sep 2019 19:25
von sihui
gerrybauer hat geschrieben: 23. Sep 2019 15:29 https://maps.luftdaten.info
https://community.openhab.org/t/solved- ... tion/44850
https://community.openhab.org/t/solved- ... info/32137
https://community.openhab.org/t/luftdat ... tapi/70489
gerrybauer hat geschrieben: 23. Sep 2019 15:29 - muss etwas ?? unter dem LW things gespeichert werden.
- was muss in den Ordner items...
- wie sieht mein Eintrag in meinem Sitemap aus?, wenn z.B. nur die Temp und die Luftfeuchtigkeit dargestellt werden sollen??
Dazu bitte hier anfangen und alle Basisseiten durchlesen:

https://www.openhab.org/docs/

Re: Feinstaubsensor

Verfasst: 23. Sep 2019 20:04
von udo1toni
Ist denn Dein Sensor online? Unter der von Dir angegebenen ID konnte ich keine Daten auslesen (wohl aber unter anderen IDs)

Beispiel ID 6787.
Voraussetzung: http Addon installiert (dies ist bisher ausschließlich als V1 Binding zu haben, deshalb erfolgt die Konfiguration zwingend über Textdateien) jsonpath Transformation Service installiert (ebenfalls V1, wie alle Transformation Services, aber keine gesonderte Konfiguration nötig)
Ein geeigneter Persistence Service, wie z.B. rrd4j oder influxdb.

Eintrag in der Datei services/http.cfg

Code: Alles auswählen

luftdaten.url=http://api.luftdaten.info/v1/sensor/6787/
luftdaten.updateInterval=60000
Dieser Eintrag erstellt einen http Cache und füllt ihn alle 60 Sekunden mit den aktuellen Daten des Sensors mit der ID 6787.

Gelieferte Rohdaten (z.B., hier der Übersichtlichkeit wegen formatiert):

Code: Alles auswählen

[
    {
        "id": 4967141319,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:03:43",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544436095,
                "value": "696.12"
            },
            {
                "value_type": "P2",
                "id": 10544436110,
                "value": "658.38"
            }
        ]
    },
    {
        "id": 4967138087,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:03:17",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544429292,
                "value": "689.70"
            },
            {
                "value_type": "P2",
                "id": 10544429294,
                "value": "652.83"
            }
        ]
    },
    {
        "id": 4967135456,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:02:51",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544423669,
                "value": "694.62"
            },
            {
                "value_type": "P2",
                "id": 10544423671,
                "value": "657.27"
            }
        ]
    },
    {
        "id": 4967133120,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:02:27",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544418710,
                "value": "689.08"
            },
            {
                "value_type": "P2",
                "id": 10544418712,
                "value": "652.15"
            }
        ]
    },
    {
        "id": 4967129478,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:02:02",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544410949,
                "value": "709.08"
            },
            {
                "value_type": "P2",
                "id": 10544410964,
                "value": "670.48"
            }
        ]
    },
    {
        "id": 4967127043,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:01:37",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544405806,
                "value": "690.20"
            },
            {
                "value_type": "P2",
                "id": 10544405815,
                "value": "653.33"
            }
        ]
    },
    {
        "id": 4967122883,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:01:12",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544397070,
                "value": "697.37"
            },
            {
                "value_type": "P2",
                "id": 10544397083,
                "value": "659.80"
            }
        ]
    },
    {
        "id": 4967120053,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:00:48",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544391122,
                "value": "692.77"
            },
            {
                "value_type": "P2",
                "id": 10544391124,
                "value": "655.22"
            }
        ]
    },
    {
        "id": 4967117504,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 17:00:22",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544385641,
                "value": "693.83"
            },
            {
                "value_type": "P2",
                "id": 10544385678,
                "value": "656.17"
            }
        ]
    },
    {
        "id": 4967114960,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 16:59:57",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544380272,
                "value": "693.70"
            },
            {
                "value_type": "P2",
                "id": 10544380274,
                "value": "656.45"
            }
        ]
    },
    {
        "id": 4967111502,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 16:59:33",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544372930,
                "value": "699.08"
            },
            {
                "value_type": "P2",
                "id": 10544372937,
                "value": "661.45"
            }
        ]
    },
    {
        "id": 4967108961,
        "sampling_rate": null,
        "sensor": {
            "pin": "1",
            "id": 6787,
            "sensor_type": {
                "manufacturer": "Nova Fitness",
                "id": 14,
                "name": "SDS011"
            }
        },
        "location": {
            "altitude": "646.6",
            "indoor": 0,
            "country": "DE",
            "longitude": "10.268",
            "id": 3431,
            "latitude": "47.966",
            "exact_location": 0
        },
        "timestamp": "2019-09-23 16:59:08",
        "sensordatavalues": [
            {
                "value_type": "P1",
                "id": 10544367562,
                "value": "694.73"
            },
            {
                "value_type": "P2",
                "id": 10544367566,
                "value": "657.50"
            }
        ]
    }
]
Die interessanten Daten können nun aus dem Cache in verschiedene Items eingelesen werden. Im Beispiel liefert der Knoten zwei Werte, nämlich P1 und P2. Interessant sind nur die aktuellen Daten, die sich im Knoten 0 befinden.

items/luftdaten.items:

Code: Alles auswählen

Group Luftdaten
Number luftdaten6787P1 "P1 [%.1f ppm]" (Luftdaten) { http="<[luftdaten:60000:JSONPATH($.[0].sensordatavalues[0].value)]" }
Number luftdaten6787P2 "P2 [%.1f ppm]" (Luftdaten) { http="<[luftdaten:60000:JSONPATH($.[0].sensordatavalues[1].value)]" }
Damit Du die Daten als Graph darstellen kannst, muss openHAB die Daten persistieren. Intern geht das z.B. mit rrd4j. Damit die Daten persistiert werden, reicht eine Datei.

persistence/rrd4j.persist:

Code: Alles auswählen

Strategies {
        // for rrd4j, we need a cron strategy
        everyMinute : "0 * * * * ?"
}

Items {
        // let's store Luftdaten values in rrd4j
        Luftdaten* : strategy = everyMinute, everyUpdate
}
Diese Datei sorgt dafür, dass die Gruppenangehörigen (aber nicht die Gruppe selbst!) der Gruppe Luftdaten mindestens minütlich persistiert werden.
Nun kannst Du in einer Sitemap auf diese Daten zugreifen.

sitemaps/luftdaten.sitemap:

Code: Alles auswählen

sitemap luftdaten name="Luftdaten" {
    Frame {
        Chart item=Luftdaten period=D refresh=60000
    }
}
Vorausgesetzt, der Knoten liefert Daten, und weiter vorausgesetzt, openHAB hatte ein bisschen Zeit, die Daten selbst zu speichern, erscheint ein Graph mit dem Verlauf beider Sensorwerte.

Alternativ kannst Du auch influxdb verwenden, eine Datenbank, die darauf spezialisiert ist, Messwerte zu erfassen und aufbereitet zur Verfügung zu stellen. Mit der Software Grafana kannst Du dann auf die Daten zugreifen und hübsche(-re) Graphen zeichnen lassen. Die Einbindung in eine openHAB Sitemap ist allerdings etwas komplizierter.

Frage am Rande: Willst Du openHAB ausschließlich für die Darstellung Deiner Sensordaten verwenden? Das wäre ungefähr so, als würdest Du ein Logistikzentrum mit angeschlossener Spedition aufbauen, um täglich die Post aus Deinem Briefkasten zu holen. ;) Soll heißen: geht natürlich (siehe oben) aber luftdaten.info bietet ja selbst einige Möglichkeiten, die Sensordaten komfortabel einzusehen.

Re: Feinstaubsensor

Verfasst: 23. Sep 2019 20:21
von gerrybauer
Vielen Dank für die Antworten, muss ich alles in den nächsten Tagen einmal ausprobieren.
Die Luftdaten, sollten nur als ein erster Part meines Openhab Systems eingebunden werden. Die ID ist übringens 6626 und der Sensor ist online.
Geplant ist auch die Steuerung der Bewässerung im Gewächshaus, je nach Wasserstand in den Regentonnen, eine Steuerung der ElektroFußbodenheizung und so weiter..., Außenbeleuchtung im Garten, Weihnachtsbaum.......
Bisher habe ich auch noch zwei Fritz!dect Steckdosen, die sich bisher nur via Paper-Ui ansteuern lassen.

Allso alles Step for Step...

Re: Feinstaubsensor

Verfasst: 23. Sep 2019 23:15
von udo1toni
gerrybauer hat geschrieben: 23. Sep 2019 20:21Bisher habe ich auch noch zwei Fritz!dect Steckdosen, die sich bisher nur via Paper-Ui ansteuern lassen.
Vermutlich meinst Du Paper UI control?

Was dort steuerbar ist, lässt sich auch mit Basic UI oder Rules steuern, da Paper UI control auch nur die zum Thing verlinkten Items verfügbar macht.

Re: Feinstaubsensor

Verfasst: 6. Okt 2019 14:09
von Dibbler42
Moin Zusammen,

was mich beim Feinstaubsensor ein bisschen nrvt ist, dass ich die Daten in die Cloud schicke und dann meine Daten wieder aus der Cloud abholen muss. Leider habe ich bezüglich der direkten Schittstelle noch keine wirklichen Infos gefunden.

Thomas

Re: Feinstaubsensor

Verfasst: 6. Okt 2019 17:20
von udo1toni
Siehe https://luftdaten.info/faq/#toggle-id-8:
Vom Sensor selbst können die Daten als JSON über die Adresse http://{ip-des-sensors}/data.json bzw. http://feinstaubsensor-{nodemcu-id}.local abgerufen werden. Die IP ist die IP des Sensors im lokalen Netz, nicht die 192.168.4.1, welche für die Erstkonfiguration genutzt wird. Die 2. Variante sollte unter Linux und MacOS normalerweise funktionieren. Für Windows muss evtl. noch eine Software installiert werden. Siehe dazu den Punkt ‚Zugriff auf den Sensor‘.
In diesem Fall wäre also das http Binding zielführend. Du musst nur die korrekte IP plus Pfad auf das JSON Objekt eintragen (am besten als http Cache). Danach greifst Du mittels JSONPATH Transformation Service auf die verschiedenen Einzelwerte zu (im Prinzip genauso wie über die API der Website)

Re: Feinstaubsensor

Verfasst: 6. Okt 2019 17:35
von Dibbler42
Danke, hab ich mindestens 100 mal gelesen und immer wieder überlesen :-(

Jetzt wäre es eigentlich nur noch schön, wenn der Sensor seine Daten auch pushed.

Re: Feinstaubsensor

Verfasst: 6. Okt 2019 17:54
von udo1toni
Das müsste dann allerdings in der Firmware gemacht werden. Keine Ahnung, ob es dafür eine Option gibt.

Re: Feinstaubsensor

Verfasst: 6. Okt 2019 18:54
von Dibbler42
Da gibt es was, aber man braucht eben auch einen Gegenstelle.
Anmerkung 2019-10-06 185317.png