Ich habe einen PowerCost Monitor von Blue Line Innovations . Es sendet Pakete über eine 433,92-MHz-HF-Verbindung an eine Anzeigeeinheit. Es gibt Code ( Power Monitor , unvollständig), um diese Pakete mit einem RF Link 4800bps-Empfänger und einem Arduino zu erkennen.
Ich bekomme definitiv etwas vom Sender, aber die Pakete scheinen keinen Sinn zu machen. Wie könnte man Daten von einem solchen Gerät systematisch entschlüsseln?
( Update/Aside 2014-07: Ein Github-Benutzer hat das Protokoll vollständig entschlüsselt und das rtl_433-Paket für SDR-Dongles geforkt, um es zu lesen: radredgreen/rtl_433 .)
( Update/Aside 2014-08: Ein anderer Github-Benutzer hat dies auf Arduino implementiert: CapnBry/Powermon433 )
Das Problem, auf das Sie dort wahrscheinlich stoßen, ist also, dass nicht lizenziertes Funkspektrum verrauscht ist. Es gibt viele Dinge, die dort senden, insbesondere billige drahtlose Elektronik wie drahtlose Türklingeln, drahtlose LED-Controller und diesen "Stromkosten" -Monitor, den Sie sich ansehen. Bist du sicher, dass du nicht nur im Lärm überschwemmt bist? Der Empfänger, mit dem Sie verbunden sind, skaliert automatisch, sodass Rauschen wie ein Signal aussieht. Was kommt heraus, wenn der Power Monitor nicht angeschlossen ist? Wenn es immer noch wie das gleiche Kauderwelsch aussieht, das Sie bekommen haben, gibt es Ihr Problem.
Sie werden die massive Anzahl von Beschwerden unter diesem Empfänger von Leuten bemerken, die sagen: "Ich kann ihn nicht verbinden!" oder "es gibt Mülldaten!" und eine ganze Menge mehr, die Ratschläge geben, wie man es repariert. Wahrscheinlich hat das Gerät, das Sie lesen möchten, ein ähnliches Schema entwickelt, um seine Daten richtig zu codieren.
Für den tatsächlichen Versuch, das Protokoll "reverse engineering" zu machen, ist dies normalerweise langweilig und langsam, aber methodisch und logisch.
Nehmen Sie zunächst einfach den Empfänger, den Sie haben, und schließen Sie ihn im One-Shot-Modus an so etwas wie ein Oszilloskop an, und schließen Sie dann den Empfänger an, der mit Ihrem Monitor geliefert wurde. Wenn das codierte Paket dann vom Kostenmonitor kommt, speichern Sie die Wellenform von Ihrem Oszilloskop und was sie aus der Softwareausgabe entspricht. Wenn dann das nächste Paket durchkommt, vergleichen Sie, was sich in der Wellenform geändert hat, mit den Daten, die Sie empfangen haben. Langsam sollten Sie in der Lage sein, herauszufinden, was los ist.
Im Allgemeinen ist der Grund, warum Sie nicht zu viele Amateur-Reverse-Engineering-Jobs sehen, der, dass beim Reverse-Engineering dieser Dinge viel Intuition im Spiel ist. Zum Beispiel: Sie werden wahrscheinlich feststellen, dass selbst bei einer einzigen Änderung der Daten (dh ein neues Paket kommt mit nur einer Temperaturänderung von 1 Grad) mehrere Änderungen im Paket auftreten können. Dies könnte aus einem Prüfsummenpaket stammen, aber wie wurde es gebildet? Ist es ein CRC16? Oder einfach eine Summe aller Bits im Paket?
Ein Werkzeug, das helfen könnte, wäre ein billiger Logikanalysator .
Viel Glück! Ich hoffe das hilft.
Dies ist eine Teilantwort, da ich die Pakete noch nicht entschlüsselt habe, aber im letzten Jahr viel darüber gelernt habe, wie einfache HF-Karten funktionieren.
Während der Kommentar von Kit Scuzz zu Logikanalysatoren hilfreich ist, sind sie es hier vielleicht weniger:
Das Tool, das ich am nützlichsten fand, ist Protocol Analyzer . Es verwendet Ihre Soundkarte als einkanaliges, langsames Datenerfassungsgerät. Es hat einige Einschränkungen (die Genauigkeit wird durch die minimale Abtastbreite der Soundkarte von etwa 22 µs begrenzt) und einige lästige Fehler, aber es ist so wie es ist verwendbar.
Ich wünschte, ich hätte zu Beginn mehr über Manchester-Codierung gewusst. Die Atmel Application Note „ Manchester Coding Basics “ ist sehr hilfreich. Es war auch sehr lehrreich, einen anderen Leistungsmesser kaufen und auseinander nehmen zu können, da ich dann Signale direkt von den µc- Pins des Senders nehmen konnte .
digitalRead()
Mist) und 2. 8 Samples in jedes serielle Byte packen, sollte das Sampling bei 10 kHz nicht schwer sein. Möglicherweise möchten Sie Ihr Sampling jedoch durch einen Interrupt auslösen, um ein deterministisches Timing zu erhalten.
scriss