Hallo,
ich möchte gerne vom Windmesser Mobile Alerts 10660 die entsprechenden Daten auslesen.
http://www.amazon.de/gp/product/B015WC8OUS/ref=as_li_tl?ie=UTF8&camp=1638&creative=19454&creativeASIN=B015WC8OUS&linkCode=as2&tag=jensosburaspu-21
Leider erhalte ich bei dem Ergebnis mittels RegEx immer den Wert "1.0"
Anbei mal der aktuell ausgelesene Datensatz:
{ "idx": 24602, "ts": 1453650673, "tx": 7178, "c": 1453650744, "pr": false, "ws": 0.1, "wg": 1.1, "wd": 10 }
Die Definition sieht folgendermaßen aus:
[b]reading01Name[/b] WINDGESCHWINDIGKEIT
[b]reading01Regex[/b] "ws": (\d?\d.\d)
[b]reading02Name[/b] BÖE
[b]reading02Regex[/b] "wg": (\d?\d.\d)
[b]reading03Name[/b] WINDRICHTUNG
[b]reading03Regex[/b] "wd": (\d?\d.\d)
[b]stateFormat[/b] {sprintf("%.1f m/s, Böe %.1f m/s, Windrichtung %.1f", ReadingsVal($name,"WINDGESCHWINDIGKEIT",0), ReadingsVal($name,"BÖE",0), ReadingsVal($name,"WINDRICHTUNG",0))}
Im Anhang dann noch das Bild des Ergebnis...
Laut Datensatz müsste jetzt doch bei Windgeschwindigkeit "0.1", bei Böe "1.1" und bei Windrichtung "10" angezeigt werden....?!?
Was mache ich falsch?
ich spekuliere mal, hier geht es um httpmod.
besser als ein bilde ist immer ein "list <name>", da es mehr infos enthält und einfacher zu lesen ist.
versuche mal die doppelten anführungszeichen zu maskieren => \"
und für leerzeichen einen punkt zu setzen. ich würde folgendes versuchen:
reading01Regex \"ws\":.([\d\.]+)
Zitat von: frank am 24 Januar 2016, 18:14:23
ich spekuliere mal, hier geht es um httpmod.
besser als ein bilde ist immer ein "list <name>", da es mehr infos enthält und einfacher zu lesen ist.
versuche mal die doppelten anführungszeichen zu maskieren => \"
und für leerzeichen einen punkt zu setzen. ich würde folgendes versuchen:
reading01Regex \"ws\":.([\d\.]+)
Hallo Frank,
vielen Dank für Deine Unterstützung - leider hat der Code von Dir bisher noch keine Veränderug gebracht.
Ich habe das Ergebnis von list im Anhang bereitgestellt - evtl. fällt Dir noch etwas auf?
Vielen Dank
Jens
Hallo zusammen,
das Ergebnis ist völlig richtig, wenn man sich den output anschaut:
Zitat{
"success": true,
"primarydomain": "www.data199.com",
"phoneid": "032330673013",
"result": {
"devices": [
{
"deviceid": "0B07EB324C23",
"devicetypeid": 11,
"name": "Windsensor Gommels",
"lang": "de",
"lastseen": 1453657841,
"lowbattery": false,
"alertwasactive": false,
"settings": {
"wsalarmactive": false,
"ws": 1.0,
"wgalarmactive": false,
"wg": 1.0,
Daher muss die Regexp folgendermaßen heißen:
reading01Name] WINDGESCHWINDIGKEIT
reading01Regex (?s)"measurements"[^}]+"ws": (\d+\.\d+)
reading02Name BÖE
reading02Regex (?s)"measurements"[^}]+"wg": (\d+\.\d+)
reading03Name WINDRICHTUNG
reading03Regex (?s)"measurements"[^}]+"wd": (\d+\.\d+)
Gruß
Markus
Diese matcht dann auf:
Zitat{
"success": true,
"primarydomain": "www.data199.com",
"phoneid": "032330673013",
"result": {
"devices": [
{
"deviceid": "0B07EB324C23",
"devicetypeid": 11,
"name": "Windsensor Gommels",
"lang": "de",
"lastseen": 1453657841,
"lowbattery": false,
"alertwasactive": false,
"settings": {
"wsalarmactive": false,
"ws": 1.0,
"wgalarmactive": false,
"wg": 1.0,
"wats": 360,
"wdnalarmactive": true,
"wdnnealarmactive": true,
"wdnealarmactive": true,
"wdenealarmactive": true,
"wdealarmactive": true,
"wdesealarmactive": true,
"wdsealarmactive": true,
"wdssealarmactive": true,
"wdsalarmactive": true,
"wdsswalarmactive": true,
"wdswalarmactive": true,
"wdwswalarmactive": true,
"wdwalarmactive": true,
"wdwnwalarmactive": true,
"wdnwalarmactive": true,
"wdnnwalarmactive": true
},
"measurements": [
{
"idx": 24653,
"ts": 1453657841,
"tx": 7195,
"c": 1453658001,
"pr": false,
"ws": 0.1,
"wg": 0.8,
"wd": 11
},
Gruß
Markus
Hallo Markus,
vielen Dank für Deine Hilfe - manchmal sieht man den Wald vor lauter Bäumen nicht.
Vielleicht kannst Du mir nochmal weiterhelfen, als Anfänger tut man sich doch öfters schwer....
Für "Böe" und "Windgeschwindigkeit" funktioniert es dank Deiner Hilfe jetzt, aber Windrichtung wird immer noch mit "0.0" angezeigt.
Jetzt habe ich mir die Readings nochmal angeschaut und bemerkt, dass "Windrichtung" gar nicht angelegt ist, obwohl ich es als attr definiert habe (siehe Auszug aus list):
Readings:
2016-01-24 20:25:35 BÖE 2.7
2016-01-24 20:25:35 WINDGESCHWINDIGKEIT 1.5
Request:
data devicetoken=c469a2c5-2f82464f-a73969cc-e1e3bf15-2eb7db2b-2b2cc4fb-a87fd82a-f596ab77&vendorid=3D3BCADD-79C6-4AEE-9F8B-73C83C047122&phoneid=032330673013&version=1.21&build=248&executable=Mobile Alerts&bundle=de.synertronixx.remotemonitor&lang=de&timezoneoffset=60&timeampm=false&usecelsius=true&usemm=true&speedunit=1×tamp=1453237425&requesttoken=07436acf2dce9a096aef931736865952&deviceids=0B07EB324C23,&measurementfroms=,0,0,0,0,0,&measurementcounts=,50,50,50,50,50,
header Content-Type: application/x-www-form-urlencoded
ignoreredirects 0
retryCount 0
type Update
url http://23.97.212.128:8080/api/v1/dashboard
Attributes:
reading01Name WINDGESCHWINDIGKEIT
reading01Regex (?s)"measurements".+?"ws": (\d+\.\d+)
reading02Name BÖE
reading02Regex (?s)"measurements".+?"wg": (\d+\.\d+)
reading03Name WINDRICHTUNG
reading03Regex (?s)"measurements".+?"wd": (\d+\.\d+)
Weil "wd" keinen Punkt im Value hat:
"wd": 11
Die Regexp also lauten muss:
reading03Regex (?s)"measurements".+?"wd": (\d+)
Habe ich aber auch nicht drauf geachtet muss ich gestehen.
Gruß
Markus
Hallo Markus,
super, vielen Dank. Den Thread habe ich auf "gelöst" gesetzt.
Da ich den Eindruck habe, dass Du mir spontan die nächste Antwort geben kannst, hier noch ein Versuch - ansonsten lese ich erstmal wieder eine Weile weiter...
Zur Anzeige verwende ich FHEM TabletUI (FTUI) und möchte das "wind_direction" - Widget verwenden.
Der Mobile Alerts Sensor
http://www.amazon.de/gp/product/B015WC8OUS/ref=as_li_tl?ie=UTF8&camp=1638&creative=19454&creativeASIN=B015WC8OUS&linkCode=as2&tag=jensosburaspu-21 (http://www.amazon.de/gp/product/B015WC8OUS/ref=as_li_tl?ie=UTF8&camp=1638&creative=19454&creativeASIN=B015WC8OUS&linkCode=as2&tag=jensosburaspu-21)
gibt die Windrichtung ja numerisch aus, also:
wd = Windrichtung (0 = N, 1 = NNO, 2 = NO, 3 = ONO, 4 = O, ...., 12 = W, 13 = WNW, 14 = NW, 15 = NNW)
Das "wind_direction" - Widget nimmt, so wie ich die Anleitung hier verstehe https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction (https://github.com/nesges/Widgets-for-fhem-tablet-ui/wiki/wind_direction), die Daten z.B. in Grad entgegen:
Attribute
direction
Reading mit der Windrichtung. Kann numerisch (0-360) oder in Textform ("NO") angegeben sein. Default: wind_direction
Wie setze ich jetzt die numerischen Werte der Windrichtung "0", "1", "2".....,"14", "15" um in die entsprechenden Grad-Zahlen?
Evtl. hast Du ja nochmal kurz Lust, mir zu helfen.
Viele Grüße
Jens
Ganz einfach. Am schnellsten und simpelsten würde ich den Wert "wd" nehmen und durch 15 teilen und dann mit 360 multiplizieren:
attr SENSOR_WINDGESCHWINDIGKEIT userReadings wind_direction_corrected:wind_direction { int(ReadingsVal("SENSOR_WINDGESCHWINDIGKEIT","wind_direction",0))/15*360 }
dadurch wird der Wert aus wind_direction genommen und folgendermaßen umgewandelt:
0 => 0°
1 => 24°
2 => 48°
3 => 72°
Dann in FTUI das neue Reading wind_direction_corrected nehmen.
Gruß
Markus