Mobile Alerts Temperatur und Luftfeuchte Sensoren in Fhem

Begonnen von hankyzoolander, 16 August 2015, 16:39:12

Vorheriges Thema - Nächstes Thema

Bara

Hallo Jens,
Ich versuche auch seit der Umstellung wieder Daten in Fhem zu bekommen, und bin bisher gescheitert.
Den String habe ich aus wireshark kopiert (zumindest hoffei ch den richtigen kopiert zu haben) und eingefügt hat aber zu keinem Ergebnis geführt. Kann es sein dass das mit einem iPhone nicht geht, sondern nur mit Android? Beim iPhone meldet wireshark für den Token empty stimmt das?
Grüße
Rainer
Grüße
Rainer

JürgenD

Vor ein paar Tagen gab es ja wieder ein Update der App.
Dabei scheinen die gerne mal die Datenbankabfrage zu ändern um fremd Programmen den Zugriff zu erschweren.

Auf Dauer währe mir da eigentlich eine andere Lösung lieber.
Hier schrieb ja mal jemand das er mit einem Jeelink hinbekommen hätte!

Bei mir hat es aber jedenfalls nicht geklappt :(

Hat da schon mal einer Erfolg gehabt und würde sagen wie es geht?

Oder gäbe es einen anderen Ansatz, z.B. den Datenverkehr vom original Gateway irgendwie umzuleiten und direkt auszuwerten?

Man kann bei dem ja ein Proxiserver eintragen.

Gruß Jürgen

costa2

Zitat von: JürgenD am 20 Januar 2016, 15:50:14

Oder gäbe es einen anderen Ansatz, z.B. den Datenverkehr vom original Gateway irgendwie umzuleiten und direkt auszuwerten?

Man kann bei dem ja ein Proxiserver eintragen.

Gruß Jürgen

Den Ansatz dazu gibt es hier ja schon im Thread, einige Beiträge zurück.

Volker
RPI3, Nanocul 433 MHz, 433 MHz Steckdosen, DVB-T Stick für 868 MHz TX Sensoren, MOBILE ALERTS Sensoren und Gateway

costa2

Zitat von: Bara am 20 Januar 2016, 07:50:01

Den String habe ich aus wireshark kopiert (zumindest hoffei ch den richtigen kopiert zu haben)

Ich denke nicht, der String müsste in etwa so aussehen:
devicetoken=APA91bHTobyyKAYeo9LNbvZ7QJDDw21VSi30di_hAciuTpvkpXPRUQC8yETo9EoIPS6BzSUX2A3mE1iIGfhbH8-tm5ltfhc6FsuLBV0vkbuie5Lh53KeaahuI_bfZuC8x1aCiSeiqfY_&vendorid=2651daf8-823f-4db0-ae02-73d73decc772&phoneid=xxxxxxxxxx&version=1.22&build=69&executable=eu.mobile_alerts.mobilealerts&bundle=eu.mobile_alerts.mobilealerts&lang=de&timezoneoffset=60&timeampm=false&usecelsius=true&usemm=true&speedunit=0&timestamp=1450691666&requesttoken=3f79c164c7f46bafa06f129e71458f3d&deviceids=0301548CBC4A,08004EA0B619,090005AC99E2,107EEEB46F02,0B002FA7C3D3,0315A0114432,022BD216FD85,02083FB10BAC,020A02D7B397,03149A8BAD0B,031555F35085,0239ECDD294F,&measurementfroms=1450605266,,,,,0,,,,0,0,&measurementcounts=,,,,,50,,,,50,50,

Wenn nicht, hast Du etwas Falsches kopiert.

Volker
RPI3, Nanocul 433 MHz, 433 MHz Steckdosen, DVB-T Stick für 868 MHz TX Sensoren, MOBILE ALERTS Sensoren und Gateway

Bara

Hallo Volker,
vielen Dank für den Hinweis. Ich hatte tatsächlich den falschen string kopiert :( und bin daher nicht weiter gekommen. Jetzt empfange ich wieder Daten. Super. :)
Grüße
Rainer
Grüße
Rainer

derBroBro

Hallo,

allgemein denke ich, dass ich das Problem mit den negativen Temperaturen nun gelöst habe. Das muss ich jedoch noch einmal zur Sicherheit validieren.

@Stefan: bei mir ist der String immer gleich ;-)
@Jürgen: Das war die Idee hinter dem Projekt :-)

Gruß Malte

josburg

#66
Hallo,

nachdem meine Mobile Alerts Temperatursensoren wieder funktionieren, beschäftige ich mich mit dem Windsensor 10660
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 habe ich bei der Interpretation der Daten noch etwas Schwierigkeiten.
Anbei mal ein Auszug:

{ "idx": 23630, "ts": 1453499284, "tx": 6819, "c": 1453499496, "pr": false, "ws": 0.1, "wg": 0.8, "wd": 3 },
{ "idx": 23628, "ts": 1453498863, "tx": 6818, "c": 1453499074, "pr": false, "ws": 0.1, "wg": 1.0, "wd": 10 },
{ "idx": 23626, "ts": 1453498441, "tx": 6817, "c": 1453498652, "pr": false, "ws": 0.4, "wg": 1.4000000000000001, "wd": 10 },
{ "idx": 23624, "ts": 1453498019, "tx": 6816, "c": 1453498232, "pr": false, "ws": 0.2, "wg": 1.4000000000000001, "wd": 10 }
{ "idx": 23622, "ts": 1453497598, "tx": 6815, "c": 1453497810, "pr": false, "ws": 0.0, "wg": 0.5, "wd": 12 },
{ "idx": 23622, "ts": 1453497598, "tx": 6815, "c": 1453497810, "pr": false, "ws": 0.0, "wg": 0.5, "wd": 12 },
{ "idx": 23620, "ts": 1453497176, "tx": 6814, "c": 1453497387, "pr": false, "ws": 0.1, "wg": 0.70000000000000007, "wd": 12 },
{ "idx": 23618, "ts": 1453496755, "tx": 6813, "c": 1453496969, "pr": false, "ws": 0.30000000000000004, "wg": 1.1, "wd": 15 },
{ "idx": 23616, "ts": 1453496333, "tx": 6812, "c": 1453496549, "pr": false, "ws": 0.60000000000000009, "wg": 1.6, "wd": 0 },
{ "idx": 23614, "ts": 1453495911, "tx": 6811, "c": 1453496126, "pr": false, "ws": 0.70000000000000007, "wg": 1.6, "wd": 15 },
{ "idx": 23612, "ts": 1453495489, "tx": 6810, "c": 1453495706, "pr": false, "ws": 1.1, "wg": 1.9000000000000001, "wd": 0 },
{ "idx": 23610, "ts": 1453495067, "tx": 6809, "c": 1453495288, "pr": false, "ws": 0.30000000000000004, "wg": 0.8, "wd": 0 }
{ "idx": 23608, "ts": 1453494646, "tx": 6808, "c": 1453494863, "pr": false, "ws": 0.70000000000000007, "wg": 1.1, "wd": 0 },
{ "idx": 23606, "ts": 1453494225, "tx": 6807, "c": 1453494444, "pr": false, "ws": 0.4, "wg": 1.3, "wd": 1 },
{ "idx": 23604, "ts": 1453493803, "tx": 6806, "c": 1453494023, "pr": false, "ws": 0.60000000000000009, "wg": 1.4000000000000001, "wd": 0 },
{ "idx": 23602, "ts": 1453493381, "tx": 6805, "c": 1453493600, "pr": false, "ws": 0.30000000000000004, "wg": 0.9, "wd": 0 },
{ "idx": 23600, "ts": 1453492959, "tx": 6804, "c": 1453493180, "pr": false, "ws": 0.1, "wg": 0.60000000000000009, "wd": 11 },
{ "idx": 23598, "ts": 1453492538, "tx": 6803, "c": 1453492759, "pr": false, "ws": 0.2, "wg": 1.0, "wd": 11 },
{ "idx": 23596, "ts": 1453492116, "tx": 6802, "c": 1453492341, "pr": false, "ws": 0.0, "wg": 0.2, "wd": 4 },
{ "idx": 23595, "ts": 1453491694, "tx": 6801, "c": 1453491959, "pr": false, "ws": 0.30000000000000004, "wg": 1.2000000000000002, "wd": 4 },
{ "idx": 23592, "ts": 1453491272, "tx": 6800, "c": 1453491497, "pr": false, "ws": 0.70000000000000007, "wg": 1.3, "wd": 3 },
{ "idx": 23590, "ts": 1453490851, "tx": 6799, "c": 1453491076, "pr": false, "ws": 0.4, "wg": 1.4000000000000001, "wd": 2 },
{ "idx": 23588, "ts": 1453490428, "tx": 6798, "c": 1453490655, "pr": false, "ws": 0.5, "wg": 1.3, "wd": 2 },
{ "idx": 23587, "ts": 1453490008, "tx": 6797, "c": 1453490233, "pr": false, "ws": 0.2, "wg": 0.70000000000000007, "wd": 2 },
{ "idx": 23584, "ts": 1453489586, "tx": 6796, "c": 1453489810, "pr": false, "ws": 0.30000000000000004, "wg": 1.9000000000000001, "wd": 0 },
{ "idx": 23582, "ts": 1453489164, "tx": 6795, "c": 1453489390, "pr": false, "ws": 0.2, "wg": 0.8, "wd": 0 },
{ "idx": 23579, "ts": 1453488743, "tx": 6794, "c": 1453488966, "pr": false, "ws": 0.2, "wg": 1.0, "wd": 2 },

idx = ??
ts = Unix-Timestamp
tx = fortlaufende Nummer
c = ??
pr = ??
ws = Windgeschwindigkeit, aber welche Einheit? Vermutlich m/s
wg = Windgeschwindigkeit Böe, aber welche Einheit? Vermutlich m/s
wd = Windrichtung (00 = N, 01 = NNO, 02 = NO, 03 = ONO, 04 = O, ...., 12 = W, 13 = WNW, 14 = NW, 15 = NNW)

Gerne würde ich in FTUI die Windrichtung mit ausgeben. Wie übersetze ich "00" in die Anzeige "Nord"?

Hat jemand eine Idee, was die Werte idx, c, pr sein könnten?
Habe ich die restlichen Daten richtig interpretiert?

Viele Grüße
Jens

derBroBro

#67
Hallo Zusammen,

ich wollte jetzt noch einmal kurz ein Update liefern.
Die Daten kann ich mittlerweile recht gut auslesen, wenn gleich es immer noch einige Felder gibt deren Funktion nicht klar ist.

Aktuell lasse ich die Daten in einen Test-Channel bei Thinkspeak.com laufen. Wen es intressiert wie das aussieht hier der Link: https://thingspeak.com/channels/76591

Natürlich kann man das ganze auch lokal betreiben. Dazu habe ich Modul erstellt (ungetestet), mit welchem man durch ein einfaches GET die letzten Daten  pro Sensor enthält.


Beste Grüße

Malte

Update:
Habe jetzt auch ein FHEM installiert und Thingspeak wie folgt eingebunden:

define Sensors HTTPMOD https://api.thingspeak.com/channels/123/feeds.json?results=1&key=XXXXXXXXXX 360
attr Sensors userattr get01JSON get01Name reading01JSON reading01Name
attr Sensors reading01JSON feeds[0]_field1
attr Sensors reading01Name Temp
attr Sensors stateFormat {sprintf("%.1f Grad", ReadingsVal($name,"Temp",0))}

mfritze


Moin,


Ich habe mal rausgefunden, wie man auf die gleiche Weise wie das iOS Programm, die Mobile Alerts Sensoren von deren Server abfragen kann. Insbesondere die Berechnung des Hash habe ich vorher nicht gefunden.


Hier der vollständige Code für die fhem Integration:
http://www.sarnau.com/posts/2016/mobilealerts_web/


Der Trick für die URL Berechnung sieht so aus:
devicetoken = 'empty'               # defaults to "empty"
vendorid = '1FB220C4-CC15-4195-97CF-8BE4FD3DAE72'   # iOS vendor UUID (returned by iOS, any UUID will do). Launch uuidgen from the terminal to generate a fresh one.
phoneid = 'Unknown'                 # Phone ID - probably generated by the server based on the vendorid (this string can be "Unknown" and it still works)
version = '1.21'                    # Info.plist CFBundleShortVersionString
build = '248'                       # Info.plist CFBundleVersion
executable = 'Mobile Alerts'        # Info.plist CFBundleExecutable
bundle = 'de.synertronixx.remotemonitor'    # [[NSBundle mainBundle] bundleIdentifier]
lang = 'en'                         # preferred language


request = "devicetoken=%s&vendorid=%s&phoneid=%s&version=%s&build=%s&executable=%s&bundle=%s&lang=%s" % (devicetoken,vendorid,phoneid,version,build,executable,bundle,lang)
request += '&timezoneoffset=%d' % 60        # local offset to UTC time
request += '&timeampm=%s' % ('true')        # 12h vs 24h clock
request += '&usecelsius=%s' % ('true')      # Celcius vs Fahrenheit
request += '&usemm=%s' % ('true')           # mm va in
request += '&speedunit=%d' % 0              # wind speed (0: m/s, 1: km/h, 2: mph, 3: kn)
request += '&timestamp=%s' % datetime.datetime.utcnow().strftime("%s")  # current UTC timestamp


requestMD5 = request + 'asdfaldfjadflxgeteeiorut0ß8vfdft34503580'   # SALT for the MD5
requestMD5 = requestMD5.replace('-','')
requestMD5 = requestMD5.replace(',','')
requestMD5 = requestMD5.replace('.','')
requestMD5 = requestMD5.lower()


m = hashlib.md5()
m.update(requestMD5)
hexdig = m.hexdigest()


request += '&requesttoken=%s' % hexdig


request += '&deviceids=%s' % ','.join(sensors)
#request += '&measurementfroms=%s' % ('0,' * len(sensors))
#request += '&measurementcounts=%s' % ('50,' * len(sensors))


http_header = {
                "User-Agent" : "remotemonitor/248 CFNetwork/758.2.8 Darwin/15.0.0",
                "Accept-Language" : "en-us",
                "Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
                "Host" : "www.data199.com:8080",
                }


# create an urllib2 opener()
opener = urllib2.build_opener()


# create your HTTP request
req = urllib2.Request('http://www.data199.com:8080/api/v1/dashboard', request, http_header)

alterma

Sehr interessant. Vielen Dank für Deine Arbeit. :)

Ich habe das iOS 'alterMA' Projekt begraben. Technoline will sowas nicht, und würde eine neue Drittanbieter App in den Server Logs auffallen, dann ist es garantiert nur eine Frage der Zeit, wann auch die geblockt wird. Ich habe mich ja dazu schon genug ausgelassen ( www.alterma.eu/hesk/ ) - es ist schade, dass ein ansich gutes Produkt an die Wand gefahren wird. Was könnten die profitieren von einer offenen und dokumentierten API...

Gruß, Stefan

Bara

Hallo Zusammen,
Jetzt hatte ich über viele Monate Ruhe und konnte Daten von mobile alerts in Fhem einlesen.
Seit gestern 16:00 kommen keine Daten mehr an >:( .
Hat Mobile Alerts wieder was Neues gemacht, habt ihr ähnliches Problem oder liegt es an meinem System?
VG Rainer
Grüße
Rainer

josburg

Hallo Rainer,
ich habe ebenfalls das selbe Problem. Bekomme auch seit gestern keine Daten mehr.
Folgende Fehlermeldung erhalte ich:
Read response to update didn't match any readings.

Weiß jemand, was zu tun ist?

Vielen Dank für eure Hilfe.

Viele Grüße Jens


Gesendet von iPhone mit Tapatalk

Bara

Hallo Jens,
Selbe Fehlermeldung bei mir. Einlesen eines neuen device token hat nichts gebracht.
Hoffe auf eure Hilfe.
VG
Rainer
Grüße
Rainer

Bara

Hallo Zusammen,
Mobile Alerts hat eine neue Website bei der man die eigenen Daten einsehen kann.
http://measurements.mobile-alerts.eu/Home ; könnte man hier nicht die benötigten Daten abrufen?!
VG
Rainer
Grüße
Rainer

josburg

Hallo,

ich denke, dass ich da jetzt auch umstelle.
Die Lösung für die richtige URL ist:
http://measurements.mobile-alerts.eu/Home/SensorsOverview?phoneid=DEINE_PHONEID

Werde heute Abend mal schauen, wie weit ich mit regulären Ausdrücken auf dieser Seite komme.

Grüße
Jens