Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Atech wireless weather station (vermutlicher Name: WS-308) #547

Closed
Kreidler1221 opened this issue Mar 15, 2019 · 31 comments
Closed

Atech wireless weather station (vermutlicher Name: WS-308) #547

Kreidler1221 opened this issue Mar 15, 2019 · 31 comments
Labels
help wanted modul needed or unknown no existing module or existing needs to be extended

Comments

@Kreidler1221
Copy link

Kreidler1221 commented Mar 15, 2019

Specifications for new sensor / switch / or other device ...

  • manufacturer: Atech

  • model name: Atech wireless weather station (vermutlicher Name, steht aber nicht auf dem Gerät, WS-308). Auf dem Aussensensor steht: 433 tech remote sensor

  • pictures of the device / the board (very helpful)
    IMG_2045

Specifications

  • Microcontroller: arduino nano und noname 433MHz Send- und Empfangsmodul
  • Version (Firmware):V 3.3.1-dev SIGNALduino - compiled at Jan 3 2017 23:59:32
  • Versionmodul (FHEM Module):v3.3.4

Hallo und viele Grüsse an die GitHub Gemeinde.
Seit geraumer Zeit versuche ich meinen Atech Temperatursensor in Fhem einzubinden. Dies ist mir leider nicht gelungen.
Ich habe einen Logdateimitschnitt VERBOSE 5 aufgenommen.
Des weiteren habe ich eine Exceldatei mit aufgezeichneten Bitsequenzen und zugehöriger Temperatur erstellt. Diese Bitsequenzen sind mit einem Arduino uno mit 433 Funkempfangsmodul extrahiert worden.
Hier nun die Logdatei:

ATECH ws-308.txt

und hier die Exceldatei mit aufgezeichneten Bitsequenzen:
Atech Messwerte.xlsx

Bitte melden, wenn Ihr noch weitere Infos benötigt
Danke

@sidey79
Copy link
Contributor

sidey79 commented Mar 15, 2019

GitMate.io thinks the contributor most likely able to help you is @sidey79.

@sidey79 sidey79 added the bug label Mar 15, 2019
@HomeAutoUser
Copy link
Contributor

Guten Abend @Kreidler1221,
wir werden uns deinen Sensor ansehen.

Es wäre sehr hilfreich, wenn du einen längeren Zeitraum einen Mitschnitt von verbose 4 machen könntest um mehr als 3 Nachrichten zu haben.

Kannst du an dem Sensor den Kanal verstellen? Wenn ja, bitte Kanal verstellen und dann ebenso noch ein Verbose 4 Log mitlaufen lassen.

MfG

@elektron-bbs
Copy link
Contributor

Aber bitte vorher dem SIGNALduino eine aktuelle Firmware verpassen!

@Kreidler1221
Copy link
Author

Hallo HomeAutoUser und elektron-bbs
Danke für Euer interesse und Hilfe
ich habe den Signalduino auf folgendes geupdatet:

version | V 3.3.1-dev SIGNALduino - compiled at Jan 3 2017 23:59:32
IM LOG STAND UPDATE OK nur hier sehe ich keine Veränderung auf Version 3.3.1.RC10
versionProtocols | 1.01
versionmodul | v3.4.0_dev_16.03

Wie kann ich die geschätzten 30 anderen Sensoren der Nachbarschaft im LOG ausblenden?
Geht das nur mit copy/paste von Hand?
Die Logdatei ist ansonsten mehrere MByte groß.

Am Sensor kann ich keinen Kanal einstellen.

Gruß -

@elektron-bbs
Copy link
Contributor

Dann hat offensichtlich das Update der Firmware nicht funktioniert. Evlt. hast du einen Arduino mit neuem Bootloader. Du könntest versuchen, im Attribut Flashcommand die Baudrate auf 115200 anzupassen:

avrdude -c arduino -b 115200 -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]

@elektron-bbs
Copy link
Contributor

elektron-bbs commented Mar 16, 2019

Ich habe jetzt eine Definition passend zu den Daten in der Datei von dir (ATECH ws-308.txt) erstellt.
Du könntest die Datei "SD_ProtocolData.pm" im Verzeichnis \fhem\FHEM\lib durch die in diesem Archiv ersetzen:
SD_ProtocolData.zip
Nach einem Neustart sollte es dir ein neues Gerät "SIGNALduino_unknown_94" anlegen. Bei diesem kannst du dann mittels "set SIGNALduino_unknown_94 UserInfo" die angezeigten Temperaturen eintragen. Im Log dieses Gerätes stehen dann alle relevanten Informationen. Das Log dann nur noch hier hochladen und wir können unser Glück versuchen :-)

Steht eigentlich hinten auf dem Sensor evtl. noch irgendeine Bezeichnung? Oder kannst du ihn öffnen und mal noch ein Bild von der Innereien posten?

@elektron-bbs elektron-bbs reopened this Mar 16, 2019
@Kreidler1221
Copy link
Author

Kreidler1221 commented Mar 18, 2019

Habe das flashen mit
avrdude -c arduino -b 115200 -P [PORT] -p atmega328p -vv -U flash:w:[HEXFILE] 2>[LOGFILE]
probiert.
Es gibt aber keine Veränderung. Im LOG steht keinerlei Info über den Flashversuch.
Beim oberen Versuch mit -b 57600 stand im LOG wenigsten UPDATE OK.

Durch die Flasherei hat es offenbar mein Empfangsmodul gekillt. Es kommt nur noch mist.
Zum Glück habe ich noch ein anderes Modul.

Die Datei von Dir (SD_ProtocolData.zip) habe ich entpackt und in das Verzeichnis \fhem\FHEM\lib
kopiert.
Nach dem Neustart hat das System leider kein Gerät "SIGNALduino_unknown_94" angelegt.
Ich habe es nicht geschafft das Gerät von Hand einzutragen (bin noch blutiger Anfänger)

Bei Verbose 4 kommen noch immer unendlich viele andere Sensoren
Momentan steht VERBOSE auf 3 und das ergibt folgendes:
2019-03-18 08:54:06 SIGNALduino sduino DMSG u94#0D8030D8DB6C8
2019-03-18 08:54:06 SIGNALduino sduino UNKNOWNCODE u94#0D8030D8DB6C8
2019-03-18 09:10:15 SIGNALduino sduino DMSG u94#0D8030CC6668
2019-03-18 09:10:15 SIGNALduino sduino UNKNOWNCODE u94#0D8030CC6668
2019-03-18 09:11:12 SIGNALduino sduino DMSG u94#0D8030CC6668
2019-03-18 09:11:12 SIGNALduino sduino UNKNOWNCODE u94#0D8030CC6668
2019-03-18 09:12:09 SIGNALduino sduino DMSG u94#0D8030CC6668
2019-03-18 09:12:09 SIGNALduino sduino UNKNOWNCODE u94#0D8030CC6668 ==22,9°C

Bei VERBOSE 4 kommt folgendes (Nur ein Auszug aus hunderten anderen Sensormeldungen):
2019.03.18 09:15:57 4 : sduino/msg READ: �MU;P0=-3092;P1=1534;P2=-2000;P3=-293;D=01212121213131213131212121212121212121313121212121313121213131212121313121213131212131312131;CP=1;�
2019.03.18 09:15:58 4 : sduino/msg READ: �MU;P0=-31284;P1=1540;P2=-291;P3=-7600;P4=-1998;D=012121212121212131414141412121412121414141414141414141212141414141212141412121414141212141412121414121214121012121212121212131414141412121412121414141414141414141212141414141212141412121414141212141412121414121214121;CP=1;�
2019.03.18 09:15:58 4 : sduino: Fingerprint for MU Protocol id 94 -> Atech matches, trying to demodulate
2019.03.18 09:15:58 4 : sduino: decoded matched MU Protocol id 94 dmsg u94#0D8030CC6668 length 48 dispatch(1/4)
2019-03-18 09:15:58 SIGNALduino sduino DMSG u94#0D8030CC6668
2019.03.18 09:15:58 4 : SIGNALduino_unknown incomming msg: u94#0D8030CC6668
2019.03.18 09:15:58 4 : SIGNALduino_unknown rawData: 0D8030CC6668
2019.03.18 09:15:58 4 : SIGNALduino_unknown Protocol: 94
2019.03.18 09:15:58 4 : SIGNALduino_unknown converted to bits: 000011011000000000110000110011000110011001101000
2019.03.18 09:15:58 4 : SIGNALduino_unknown sduino Protocol:94 | To help decode or debug, please add u94! (attr sduino development u94)
2019.03.18 09:15:58 4 : Unknown, please report
2019-03-18 09:15:58 SIGNALduino sduino UNKNOWNCODE u94#0D8030CC6668
2019.03.18 09:15:58 3 : sduino: Unknown code u94#0D8030CC6668, help me!
2019.03.18 09:15:58 4 : sduino: decoded matched MU Protocol id 94 dmsg u94#0D8030CC6668 length 48 dispatch(2/4)
2019.03.18 09:15:58 4 : sduino Dispatch: u94#0D8030CC6668, Dropped due to short time or equal msg
2019.03.18 09:15:58 4 : sduino/msg READ: �MU;P0=890;P1=-118;P2=-1136;P4=-196;

Das Bild vom Sensorinneren folgt in kürze.

@Kreidler1221
Copy link
Author

Hier das Bild vom Sensoeinneren:
IMG_2048

@Kreidler1221
Copy link
Author

IST DAS RICHTIG?
define SIGNALduino_unknown_94 SIGNALduino none
setuuid SIGNALduino_unknown_94 5c8fa208-f33f-0598-4899-ae20e8b54ffd918f
attr SIGNALduino_unknown_94 dummy 1
attr SIGNALduino_unknown_94 room 1
attr SIGNALduino_unknown_94 verbose 3
Doch das mit dem "set SIGNALduino_unknown_94 UserInfo" verstehe ich nicht. Wo eintragen?
"Userinfo" scheint er nicht zu kennen?

@elektron-bbs
Copy link
Contributor

Nein, das ist leider nicht richtig. Du hast damit einen SIGNALduino als Dummy angelegt. Diesen musst du wieder löschen.

Ich hatte vergessen zu erwähnen, das du noch folgende Einstellungen bei deinem SIGNALduino vornehmen musst:
Attribut "addvaltrigger" auf 1 setzen.
Attribut "development" auf 1 setzen.
Dann müsste es dir im Raum "SIGNALduino_un" ein neues Gerät "SIGNALduino_unknown_94" anlegen.
Bei diesem gibt es dann den Befehl "Userinfo".

@Kreidler1221
Copy link
Author

Kreidler1221 commented Mar 19, 2019

Danke elektron-bbs für den Tipp "SIGNALduino_un"
Nun hat es mit dem LOG funktioniert.
Anbei einige LOGs mit Temperatur. Wenn im LOG 2 oder 3 gleiche Temperaturen aufeinander folgen, dann hat die Atech Wetterstation das so angezeigt (Ist aber eigentlich unlogisch, evtl. konnte die Station den Datenstrom nicht korrekt empfangen).
SIGNALduino_unknown_94-2019.log

Die selben Meßdaten in einer Excel-Tabelle sortiert (Tabellenblatt Atech sortiert)
SIGNALduino_unknown_94-2019 mit B.xlsx

LOG Meßdaten mit + und - Temperaturen
SIGNALduino_unknown_94-2019_2.log

LOG Meßdaten mit + und - Temperaturen sortiert nach Temperatur (Tabellenblatt Atech sortiert)
SIGNALduino_unknown_94-2019_2 mit B.xlsx

Beim Übergang von -Temperaturen zu +Temp. ändert sich Bit 15 und 16.
Bit 0 bis 14 zeigt über alle Meßdaten keine Veränderung.
Leider komme ich mit der Decodierung nicht weiter.

@elektron-bbs
Copy link
Contributor

Ich finde auch keinerlei Anhaltspunkt, wie ich die Bits deuten soll. Vieleicht hat ja jemand eine Idee. Ich habe die Sensordaten mal in eine vorhandene Tabelle eines anderen Sensors übernommen. Die Berechnungen stammen noch vom anderen Sensor:
Atech.Messwerte.xlsx

@elektron-bbs elektron-bbs added help wanted modul needed or unknown no existing module or existing needs to be extended and removed bug labels Apr 1, 2019
@Kreidler1221
Copy link
Author

Konnte die Daten noch immer nicht decodieren.
Wäre es nicht möglich die aufgezeichneten bitMsg Daten im Logfile mit den zugehörigen aufgeschriebenen Temperaturen in eine "Nachschlage-Tabelle" aufzunehmen.
(Sensor soll einen Meßbereich von -20°C bis 50°C haben das entspricht bei 0,1°C 700 Werte
bei 0,2°C Auflösung 350 Werte das müsste doch machbar sein)
Mit Hilfe dieser "Nachschlage-Tabelle" dann die aktuellen Temp.-Sensor-Daten zu decodieren.
(Sozusagen Sensor-Wert (bitMsg) durch nachschlagen in der Nachschlage Tabelle einen Grad-Wert zuordnen und dieses dann für fhem lesbar, in eine Logdatei schreiben.
Mit solch einem Grundgerüst könnte man dann für jeden noch so übel codierten Sensor für fhem anzeigbare werte erhalten. Das ist sicherlich keine elegante Lösung aber eine Lösung.
Gibt es so etwas vielleicht bereits?

@HomeAutoUser
Copy link
Contributor

Das Problem wird sein, das wenn du die Werte abliest und notierst, dein Sensor ggf schon neue + 0,1 ... Grad gesendet hat.

Wir wissen nicht, ob alle Bits für die Temperatur sind oder eine Checksumme versteckt ist. Wenn eine Checksumme versteckt ist, bezweifle ich, das die Werte immer gleich sind.

Du könntest dir nur nochmal die Mühe machen, ein Logfile mit den abgelesenen Werten zu erstellen. Vielleicht gelingt es dir, 0,0 Grad zu loggen.

Man bräuchte im Optimalfall eine konstante steigende Temperatur in gleichen Schritten um einen optimalen Zussmnenhang zu erkennen.

Bisher gibt es nur Erkenntnisse, vermutlich über die ID , Temperatur positiv oder negativ und das bei positiver Temperstur diese über einem bestimmten Wert ist.

Wenn wir das „knacken“ wollen, benötigen wir Messreihen.

Mfg

@HomeAutoUser HomeAutoUser reopened this Apr 9, 2019
@HomeAutoUser
Copy link
Contributor

Ich habe nun nochmal die Suche fortgesetzt. @elektron-bbs , schau dir mal diesen Link an

https://www.mikrocontroller.net/topic/86490

Vielleicht ist da was dabei :) Mobil ist es nicht günstig die Daten aufs Display zu zaubern.

@elektron-bbs
Copy link
Contributor

elektron-bbs commented Apr 9, 2019

Ich werde das Gefühl nicht los, das das eigentlich Manchester-Code ist.
@Kreidler1221 Hast du eigentlich mittlerweile die aktuelle Firmware auf dem Arduino?
Hast du evtl. manchesterMC beim SIGNALduino abgeschaltet?

@Kreidler1221
Copy link
Author

Kreidler1221 commented Apr 10, 2019

Die Seite
https://www.mikrocontroller.net/topic/86490
kenne ich. Leider konnte ich aber keinen Zusammenhang mit meinen Daten ableiten.

Morgen versuche ich die 0°C zu loggen. Das wird aber nicht einfach!

zu elektron-bbs:
Ich finde keine Firmware die neuer ist wie 3.3.1 RC 10. Die habe ich heute geflasht f. Nano328
(-compiled at Dec 29 2018 ....)
Versionprotocols 1.01
Die Versionsmodul ist 3.4.0 dev 16.03

Hast du evtl. manchesterMC beim SIGNALduino abgeschaltet? Diesen Befehl hab ich nicht in meiner fhem.cfg also nein

@elektron-bbs
Copy link
Contributor

elektron-bbs commented Apr 10, 2019

Dann bist du jetzt auf dem aktuellen Stand. Sehen damit die Logs des Sensors jetzt evtl. anders aus?

Welche Nachrichtentypen aktiv sind bekommst du mit dem Befehl
get sduino config
angezeigt.
Lass dir mal bitte bei deinem sduino alle Konfigurationen mit den Befehlen bei "get" ausgeben und poste dann die Ausgabe des Befehls:
list sduino

Ach so, zu deiner Idee mit der Tabelle: Das ist zwar im Prinzip möglich, aber da die Länge der Nachrichten nicht mal konstant ist (bisher gesehen 36 bis 52), halte ich das für aussichtslos.

@elektron-bbs elektron-bbs reopened this Apr 10, 2019
@Kreidler1221
Copy link
Author

Kreidler1221 commented Apr 11, 2019

Gestern hatte ich verbose auf 4 gestellt und die Ausgaben beobachtet.
Es gab keine wesentlichen Änderungen. Manchmal erschien eine Match-Nachricht
aber nach Prüfung dieser kam die Nachricht no match found.

get sduino config = config: MS=1;MU=1;MC=1;Mred=1
list sduino =
list_sduino.txt

Die Liste der bitMsg-Daten mit zugehörigen Temp.-Werten ist nun erheblich erweitert.
Die hohen Werte von 60°C bis ca. 28°C sind fast vollständig mit 0.1°C Auflösung gelogt.
Wenn man die Bitmuster am Ende anschaut sieht man immer folgende Musterendung:
01000
Bitmuster, welche so nicht enden sind evtl. unvollständig
Auffällig in den Bitmustern sind die
11-er Doppel, die in jeder Zeile vorkommen. Leider kann ich damit aber nichts anfangen????

Hier nun die Datei vom 12.04.2019, diese enthält auch den gewünschten WERT von 0.0°C
Atech.txt

@Kreidler1221
Copy link
Author

Kreidler1221 commented Apr 24, 2019

Hallo ich denke ich habe den Atech Code geknackt.
Anbei die Excel Datei, welche die Dekodierung beschreibt.
Bei Rückfragen bitte hier melden.
Ich hoffe ihr könnt aus diesem wissen einen Perl Dekoder für Fhem programmieren.
Die Hex Werte (nicht umgewandelt) entsprechen den Grad werten
Die Excel Datei enthält Macros zur Wandlung bintodez und bintohex (für mehr als 8 bit Wandlung)

Atechdat20190422.zip

@Kreidler1221
Copy link
Author

Hallo
habe ich etwas falsches angeklickt weil oben "closed" steht?
Der Atech-Code ist geknackt SIEHE OBEN !!

@elektron-bbs
Copy link
Contributor

Irgendwie scheinst du immer mal "close" und "comment" zu verwechseln :-)
Das sieht gut aus. Ich habe es mal noch selbst in eine Excel-Tabelle gestrickt. Die Temperaturberechnung ist kein Problem.
Atechdat20190422_neu.xlsx
Was noch zu klären wäre:
Byte 0 könnte eine Ident des Sensors sein. Diese ändert sich evtl. bei Batteriewechsel. Müsstest du bitte noch testen.
Werden vieleicht noch andere Daten übermittelt, wie Batteriezustand oder manuelles Auslösen des Sensors mittels Taste? Oder gibt es einen Schalter für verschiedene Sendekanäle?
Womit ich noch nichts anfangen kann ist Byte 3, zumal sich die Länge der Nachrichten immer mal ändert.

@Kreidler1221
Copy link
Author

Die Tabelle gefällt mir sehr gut.
Bei dem Erstellen der vielen Messdaten musste ich einige male die Batterien entfernen und wieder einsetzten. Dabei hat sich aber an den Bitmustern nie etwas geändert.
Ich muss nochmal die Bedienungsanleitung lesen. Soviel ich weis hat diese Wetterstation solche Funktionen nicht.
Vielleicht gibt es noch bessere Ausführungen dieser Wetterstation die mehr können als meine?

@elektron-bbs
Copy link
Contributor

Mhmm, ich kann mir nicht vorstellen, das der Hersteller keine Vorsichtsmaßnahmen getroffen hat, wenn zwei oder mehr Sensoren empfangen werden könnten. Bei den meisten ändert sich halt irgendeine Ident und/oder man hat eine Möglichkeit manuell einen Kanal einzustellen.

Ich habe eine erste Vorabversion zum Test fertig:
20190425.zip
Ich habe jetzt erst mal Byte 0 als Ident verwendet. Es müsste dir einen Sensor SD_WS_94_T_0C anlegen.

@Kreidler1221
Copy link
Author

Super es funktioniert,
Sensor SD_WS_94_T_0C sowie Filelog und Plotfenster wurde angelegt.
Herzlichen Dank

@elektron-bbs
Copy link
Contributor

Prima, dann testest du das bitte noch einige Tage und dann nehmen wir es mit in die Entwicklerversion auf.

@Kreidler1221
Copy link
Author

Hallo,
ich bin total frustriert. Heute morgen sehe ich an der Wetterstation, dass kein Signal vom Aussensensor kommt. Ich will nach dem Sensor schauen und .. der Sensor ist WEG, vom Festerbrett geklaut (wohne im Erdgeschoss). Alles im Vorgarten abgesucht Sensor nicht mehr da. Ich hoffe der Dieb hat auch keine Freude an meinem Sensor.
Das sind die letzten Temp.-Daten
2019-04-27_18:40:35 SD_WS_94_T_0C temperature: 11
2019-04-27_18:40:35 SD_WS_94_T_0C temperature: 11.9
2019-04-27_20:22:14 SD_WS_94_T_0C temperature: 7
2019-04-27_20:29:50 SD_WS_94_T_0C temperature: 5
2019-04-27_20:38:23 SD_WS_94_T_0C temperature: 3.8
2019-04-27_20:47:53 SD_WS_94_T_0C temperature: 4.5
2019-04-28_05:42:45 SD_WS_94_T_0C temperature: 4.6
2019-04-28_07:45:18 SD_WS_94_T_0C temperature: 7.7

@elektron-bbs
Copy link
Contributor

Mist, dann war die Freude leider nur von kurzer Dauer...
Trotz allem noch eine Frage: Kamen die Werte wirklich so selten, oder hast du nur einen Auszug gepostet?
Lade bitte noch das komplette Log vom Sensor hier hoch.

@Kreidler1221
Copy link
Author

Die Werte kamen ca. im 2-4 im Minutenabstand
Ich hatte den LOG wegen Platzmangel auf dem Raspi auf nur die Temperatur-Werte geändert.

SD_WS_94.txt

@elektron-bbs
Copy link
Contributor

Danke, zumindest die ersten gut 2 Stunden sind ja noch komplett. Der Sensor sendet wohl aller kanpp 60 Sekunden.

@elektron-bbs
Copy link
Contributor

@Kreidler1221
Dir nützt das zwar nun nichts mehr :-(
Das Protokoll wurde jetzt in die Entwicklerversion übernommen. Ich danke dir für die sehr gute Zusammenarbeit.
Ich schließe dieses Issue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted modul needed or unknown no existing module or existing needs to be extended
Projects
None yet
Development

No branches or pull requests

4 participants