Luftqualität Sensor zur Steuerung Kwl

Begonnen von Tomk, 12 Dezember 2021, 08:53:06

Vorheriges Thema - Nächstes Thema

Tomk

Das kann ich verstehen und wäre es mir auch nicht wert :-)
Dann ändere ich mal lieber nichts mehr... Never change a running system...

drhirn

Ich schick das Gerät schweren Herzens zurück. Ein mit ESP8266 aufgemotzer TFA Dostmann CO2-Monitor tut's auch ;).

drhirn

Ich habe gerade eine unerwartete Nachricht aus China bekommen:
ZitatI have  good news for you,we decided to open private cloud config to some advanced technical users,please let us know your name or mobile number on Qingping IoT App,We will open the permissions of this private cloud for you.

Blöd, dass ich das Gerät nicht mehr habe ;)

Tomk

Alles andere hätte mich auch gewundert. Es war ja fertig entwickelt und läuft die ganze Zeit bei mir, auch nach SW Updates...

Waschy

Hallo zusammen,

ich habe gerade an den Support xiang.li@qingping.co geschrieben und folgende Antwort erhalten:

ZitatAs connecting devices to a private cloud server incurs technical and support costs on our side, we now only provide cloud-to-cloud connection
services for free, and no longer provide private cloud server setup for free. However, considering that you are an advanced technical user, I have
opened the privatization interface for your special application. Please log in to your account to check.

Ich denke mal wenn man freundlich fragt, das Produkt lobt und es nicht tausende Request am Tag sind
stehen die Chancen gut, dass man den Konfigurations-Bereich freigeschaltet bekommt ...

Noch eine Frage in die Runde ... wie sehen Eure JSON Strings für

- Self-built MQTT Information
- Custom Config


aus? Mit welchen Update Intervallen läuft das System stabil?

Waschy

Hallo und nochmal eine Frage in die Runde:

Hat es schon jemand geschafft den AirMonitor dazu zu bringen aktuelle
Daten (type 12) ohne Ack (also "need_ack": "ignore") zu schicken?

Ich will ja nur die Daten sammeln und nicht im Datagram aufsammeln ...  ;)

Tomk

Hallo Waschy,

Ich weiß nicht wie genau du die Daten Abfragen möchtest, aber ich frage alle Sensordaten über Mqtt ab. Da braust du kein acknowledge oder anderes...

Gruß

Waschy

Mein Problem ist, dass ich nicht nur Echtzeitdaten (type 12) bekomme, sondern auch historische Daten (type 17).
Und diese Datenpakete werden länger und länger ... aktuell sind es schon 49 Datenpunkte ... hier ist meine
Vermutung, dass sich dieser Trend ohne ein ACK nicht stoppen lässt ...

Das Dev-Portal schreibt ja auch:
Zitat4.3 Response Data Format
After receiving the data from the device, server must response to the device by sending ack message. The message format please refer to
QingPing MQTT Communication Protocol - 3.18 Server Response For History Data Report. Otherwise the device will report the same data in the next circle.

Im Anhang mein aktuelles Datenpaket ..

Waschy

#38
Jetzt hab ich mal am Wochenende hingesetzt und etwas JS für meinen ioBroker geschrieben ... ist zwar etwas off topic hier im FHEM Forum, aber passt zum Thema qingping und so bin ich ja auch selbst auf dem richtigen Weg gestupst worden :D

Das Script sendet den passenden ACK auf Type 17 History Nachrichten, speichert Type 12 Echtzeitdaten als User-Objekt und passt den TVOC sowie den Epoch-Timestamp an ...

Danke an die Community

minierm

Hi, hab jetzt den Air Monitor Lite.
Funktioniert eigentlich auch. Zumindest bis gestern :-)
Jetzt kommen die Daten seltener als stündlich, gestern war es noch alle 1-5 Minuten, wie konfiguriert.
Aktueller Datensatz:
{"type":"17","need_ack":0,"sensorData":[{"timestamp":{"value":81},"battery":{"value":100,"status":2},"temperature":{"value":24.06,"status":0,"unit":"C","co2_calib_state":0},"humidity":{"value":53.64,"status":0,"unit":"%"},"co2":{"value":1810,"status":0},"pm25":{"value":1,"status":0},"pm10":{"value":1,"status":0}}]}
und ganz viel
{(10)(9)"id":(9)689,(10)(9)"type":(9)"10"(10)}
{(10)(9)"id":(9)4,(10)(9)"type":(9)"13",(10)(9)"wifi_info":(9)"xxx",(10)(9)"sw_version":(9)"4.8.5",(10)(9)"module_version":(9)"4.8.5",(10)(9)"wifi_mac":(9)"xxx",(10)(9)"hk_salt":(9)"xxx",(10)(9)"iot_platform":(9)0,(10)(9)"timestamp":(9)80,(10)(9)"timezone":(9)10,(10)(9)"hw_version":(9)"0001"(10)}

Also "type":"17" und "need_ack":0. Die Werte scheinen aber aktuell zu sein.
Ich werd das weiter beobachten und am WE nochmal mit der Konfiguration rumspielen.

Hier relevante Auszüge der aktuellen Doku.
https://developer.qingping.co/private/communication-protocols/public-mqtt-json#224-command-type-support-list
3.17 Sensor Data Report
"need_ack": 1, // 1: need ack from server; ignore: no ack from server

2.2.4 Command Type Support List
10 Device requests device list
11 Server response device list
12 Server send setting for temporary report and duration time
13 Heartbeat package
14 Reconnect MQTT
15 Server sends BLE data(without response)
16 Modify MQTT connection setting
17 Modify data report interval
12 and 17 Sensor data report(12: real-time data, 17: history data)
18 Server response for history data report in type 17

minierm

#40
Ich hab es jetzt geschafft, minütlich Daten zu bekommen. Oder auch nicht, hört nach einiger Zeit wieder auf.
Es gibt aber einen Workaround: Type 12 :-) Setzt temporär das Reporting Interval. Das Kommando dann noch regelmässig absenden und gut ist.
ReadDeviceSetting, SetTemporary, SetReportInterval und SetReportSettings funktionieren, das sind die Type 17 Beispiele (3.16). Es funktionieren auch mindestens "page_sequence", "auto_slideing_time", "display_off_time", "night_mode", "screensaver_type" (0-3),  "power_off_time" (0-60 Minuten); Die Parameter sind aber auch nirgends beschrieben. Ich hab halt einfach ausprobiert, was bei GetDeviceSetting rauskommt wieder zurückzuschreiben.
screensaver_type:
3 = fixer Wert (klein springend)
2 = wechselnde Werte (klein)
1 = fixer Wert (groß bewegend)
0 = wechselnde Wertescrollen (groß)
https://developer.qingping.co/private/communication-protocols/public-mqtt-json#316-modify-data-report-interval
define MQTT2_<MAC> MQTT2_DEVICE qingping-<MAC>
attr MQTT2_<MAC> IODev MQTT_HA
attr MQTT2_<MAC> autocreate 1
attr MQTT2_<MAC> comment qingping Airmonitor lite\
Laut Umweltbundesamt gibt es für Feinstaub der Klasse PM10 einen Tagesgrenzwert von 50 μg/m³. Allgemein gilt ein maximaler Jahresmittelwert von 40 μg/m³. \
Für die kleineren Partikel PM2.5 gibt es von der EU und der WHO nur unverbindliche Zielwerte von 25 μg/m³.\
\
SetLED "co2_led_th": "1000,2000,3000", "pm10_led_th": "50,150,250,350,450", "pm25_led_th": "35,75,115,150,250, "temp_led_th": "2300,2650,2800"
attr MQTT2_<MAC> event-min-interval sensorData_1.*value:600
attr MQTT2_<MAC> event-on-change-reading setting.*,.*timestamp.*,.*temperature_value.*:0.5,.*humidity_value.*:1,.*co2_value.*:10,.*pm.._value.*:5,sensor.*(?!time).*
attr MQTT2_<MAC> group MQTT
attr MQTT2_<MAC> jsonMap need_ack:0
attr MQTT2_<MAC> periodicCmd SetTemporary:10
attr MQTT2_<MAC> readingList qingping/<MAC>/up:.* { json2nameValue($EVENT) }
attr MQTT2_<MAC> stateFormat CO2: sensorData_1_co2_value, pm10: sensorData_1_pm10_value, pm25: sensorData_1_pm25_value, Temp: sensorData_1_temperature_value&deg;;, Hum: sensorData_1_humidity_value%
attr MQTT2_<MAC> setList ReadDeviceSetting qingping/<MAC>/down {"type":"28"} \\
SetTemporary qingping/<MAC>/down {"type": "12", "up_itvl": "10", "duration": "600"} \\
ReadAlarm qingping/<MAC>/down {"type":"40", "action":"alarmQuery"} \\
SetReportInterval qingping/<MAC>/down {"id": 10, "need_ack": 1, "type": "17", "desc": "change settings", "setting": { "report_interval": 10, "collect_interval": 10, "co2_sampling_interval": 10, "pm_sampling_interval": 300}, "timestamp": 801} \\
SetReportSettings qingping/<MAC>/down {"id": 20, "need_ack": 1, "type": "17", "desc": "change settings", "setting": { "temperature_unit": "C", "night_mode_start_time": 1381, "night_mode_end_time": 481}, "timestamp": 902} \\
SetOtherSettings qingping/<MAC>/down {"id": 31, "need_ack": 1, "type": "17", "desc": "change settings", "setting": {"auto_slideing_time":60, "power_off_time":5, "display_off_time":300, "is_12_hour_mode": 0, "page_sequence": "pm25,pm10,co2,temp,humi", "screensaver_type": 1}, "timestamp": 1555} \\
SetLED qingping/<MAC>/down {"id": 40, "need_ack": 1, "type": "17", "desc": "change settings", "co2_led_th": "1001,2001,3001", "pm10_led_th": "10,40,50,250,450", "pm25_led_th": "10,25,75,130,250", "temp_led_th": "2000,2100,2500"}, "timestamp": 1555} \\
SetOffset qingping/<MAC>/down {"id": 250, "need_ack": 1, "type": "17", "desc": "change settings", "co2_asc": 1, "co2_offset": 1, "co2_zoom": 1, "pm10_offset": 1, "pm10_zoom": 1, "pm25_offset": 1, "pm25_zoom": 1, "temperature_offset": -20, "temperature_zoom": 1}, "timestamp": 1010}

Kann mir jemand sagen, wie man eine eindeutige ggf. aufsteigende ID generiert und mitgibt? Und einen Timestamp (der aber bei Start mit 0 anfängt?)!)...Scheint aber auch nicht groß zu stören.