Arduino Messwerte mit 433MHz an FHEM übermitteln

Begonnen von hukatoni, 04 Mai 2018, 14:25:10

Vorheriges Thema - Nächstes Thema

hukatoni

Hallo zusammen,

da mein Projekt "autarke Gewächshausbewässerung mit Solar und Regenwasser" aktuell überarbeitet werden muss (Akku und Solarpanel unterdimensioniert), wollte ich zumindest noch meine Messwerte aus dem Arduino an FHEM übermitteln und über die Tablet UI komfortabel anzeigen lassen (Bodenfeuchte und Temperatur, später noch Luftfeuchtigkeit).

Der Empfänger am Raspi funktioniert ohne Probleme (RFSniffer empfängt Signale meiner Baumarktsteckdosen Fernbedienung) und auch den Sender sollte ich wohl zum Laufen bringen können (mittels RCSwitch.h).

Allerdings zerbreche ich mir schon im Vorfeld den Kopf, wie FHEM diesen "CustomSensor" nutzen könnte.

Gibt es ein Modul, dass die empfangenen 433MHz Signale auswerten kann?
Ich würde mich auch selbst ans Programmieren versuchen, allerdings sind nur Kenntnisse in C# und Powershell vorhanden^^

Da es egal ist, ob andere Personen diese Daten auslesen können, würde ich mir einen String zusammenbasteln und abschicken (grob skizzierte Programmierung):

// die Messwerte wurden vorher ausgelesen und in den Variablen bodenSensorWert (in Prozent umgerechnet, also maximal dreistellig) und temperaturSensorWert (5-stelliger String) abgespeichert
char transmissionText[50]; // zu übertragener String, großzügig dimensioniert

char initString[] = "[FHEMCUSTOMSENSOR1];"; // Beginn des Strings, den FHEM erkennen soll
char seperator[] = ";"; // Trennzeichen zwischen den Messwerten

strcat(transmissionText,initString);
strcat(transmissionText,bodenSensorWert);
strcat(transmissionText,seperator);
strcat(transmissionText,temperaturSensorWert);

// Beispielausgabe
// [FHEMCUSTOMSENSOR1];100;99.99 -> 29 Zeichen

mySwitch.send(transmissionText);


An "[FHEMCUSTOMSENSOR1]" soll FHEM erkennen, dass es der gewünschte Sensor ist, anschließend würde ein Split nach ";" erfolgen, um die UserReadings zu erhalten.

Habt ihr eine Idee, wie es zu realisieren wäre?

Beta-User

Hallo und willkommen im Forum.

Soweit mir bekannt, gibt es bislang kein direkt passendes Projekt, in der Regel werden andere Transceiver verwendet (CC1101 für Asksin++, RFMirgendwas für Lacrosse-kompatible Dinge iVm. KeyValueProtocol).
Vermutlich bist du einfacher dran, wenn du auch andere Transceiver verwendest und ein passendes Gateway (USB oder Wifi).

Vielleicht schaust du dir MySensors (Starter Guide im Wiki) an, damit ist es bei vorhandenen C-Kenntnissen vermutlich am einfachsten, den Code entsprechend anzupassen. Als Transceiver (MySensors unterstützt mehrere) würde ich auf RFM69@868 setzen, wenn die Entfernung nicht zu groß ist. Damit kann man bei Bedarf auch verschlüsseln, der Appetit kommt ja erfahrungsgemäß beim Essen.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

KölnSolar

Guck mal in der Bastelecke. Dort haben wir ein, zwei Projekte, die sich mit vergleichbaren Themen befassen. Stichwort attiny/Lacrosse/rc-switch. Die Projekte basieren zwar auf dem kleineren u. stromsparenderen attiny, lassen sich aber problemlos mit einem Arduino umsetzen.
Als Transceiver würd ich Dir den Selbstbau-CUL empfehlen, da der vermutlich auch Deine Baumarktsteckdosen out-of-the-box bedienen kann.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Harst

Bei mir läuft soetwas ähnliches. Ich habe die Werte skaliert und sende mit der Bibliothek Sensortransmitter. Die Werte sehen dann aus wie Temperatur und Luftfeuchtigkeit. Und der Sender ist ein einfacher OOK- Sender für 3 €

Horst.