Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Firmenkunden / Bildungseinrichtungs Shop

Funk-System FS20

Zahenwerte übermitteln

Beiträge zu diesem Thema: 2
Zahenwerte übermitteln
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
22.02.2015, 01:29
Hallo,

leider gibt es keine Doku zum Sender als Download o.ä. VOR dem Kauf. Zumindest habe ich keine gefunden. Jetzt habe den Sender und gleich das passende Jounal PDF gekauft und festgestellt, dass ich anscheinend keine beliebigen Zahlen übermitteln kann.

Ich will eigentlich via eines Arduino Mega einen Füllstand per FS 20 übermitteln.
Ich dachte, dass geht quasi als Temperaturwert. Auswerten werde ich das Signal so oder so selbst via FHEM auf einem Raspberry und gleichzeitig mit einem anderen Arduino.

Nun meine Frage.
Wie kann ich mit dem Arduino Mega R3 und dem FS 20 UART einen Zahlenwert, am besten gleich mit Datum und Uhrzeit, übermitteln?
Da ich selbst auswerte, kann ich dann einen beliebigen Füllstand übertragen?
Für einen kleinen Demo-Code, wenn es denn geht, wäre ich echt dankbar.
Datum und Uhrzeit ist kein muss, die habe ich auch am Empfänger, allerdings habe ich dann eine Abweichung von max. 5 Min. von Messung und Uhrzeit.

Gruß
Aw: Zahenwerte übermitteln
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
27.02.2015, 00:17
Habe gerade gesehen, dass ich da doch so einige Schreibfehler in meinem obigen Beitrag habe. Entschuldigung, das ist/war der Uhrzeit geschuldet.

Meine Frage bleibt aber bestehen.
Kann ich beliebige Zahlenwert im Integerbereich mit diesem Modul senden? Und wenn ja wie?
Wenn ich die Produktbeschreibung lesen, dann wird der Eindruck erweckt, dass das möglich ist.
In der Doku steht dazu aber nichts und durch Testen bekomme ich es nicht hin. Ich schaffe immer nur 'Stufen', aber nicht 1, 2, 3, ...., 32000

P.S.
In einem anderen Beitrag sah ich einen Demo-Code zum Anbinden an den Arduino. Der enthält einen Fehler.
Ich erlaube mir den Code stark abzuwandeln und hier zu posten.
Wenn des Probleme gibt, bitte ich den Admin das einfach zu löschen.
Damit funktioniert das Ding am Arduino Mega.

&
Umrechung HEX zu ELV:
http://www.homematic-inside.de/tecbase/tools/fs20tocul

Beispiel zum Senden von FS20 Befehlen mit dem ELV UART Sender FS20 US
WICHTIG!
Der RX vom Sender muss an den TX vom arduino und umgekehrt angeschlossen werden
*/

// VARIABLEN ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#include <SoftwareSerial.h> // Include Soft-Serial Library

int txPin = 16; // Define RX Pin
int rxPin = 17; // Defin TX Pin
SoftwareSerial mySerial(rxPin, txPin); // 16=TX2, 17=RX2 für Arduino MEGA

char my_hc = {0x55, 0x55}; // HC1 HC2 / ELV 2222 2222 = CUL 55 55
char my_device = 0x55; // Channel (Device Address) ELV 2222 = CUL 55

// FS20 Command-IDs (Please refer at Documentation from ELV)
char fs20_command_id = {0x02, 0x06}; // {send one time, length of this command}

// Order FS20 to do Codes (Please refer at Documentation from ELV)
char fs20_do; // This will be send
char fs20_do_ext; // Extension of what will be send
char fs20_off = 0x00; // Command = Off
char fs20_prog_time = 0x36; // Programm internal Timer
char fs20_toggle = 0x12; // Command = Toggle
char fs20_extension = 0x01; // Command Extension (e.g. for cmd to to set the timer)


// SETUP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void setup()
{
pinMode(rxPin, INPUT); // Set RX as Input
pinMode(txPin, OUTPUT); // Set TX as Output

Serial.begin(9600); // USB serielle Schnittstellen initialisieren
mySerial.begin(9600); // Eigene serielle Schnittstellen initialisieren

fs20_do = fs20_prog_time;
fs20_do_ext = fs20_extension;
}

// LOOP ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void loop()
{
delay(10000); // Wait for 10 seconds

// Send an FS20 command
sendCommand(fs20_command_id, fs20_command_id, my_hc, my_hc, my_device, fs20_do, fs20_extension);

// print status from FS20 US to USB serial
while(mySerial.available() > 0) // Print only if data available
{
Serial.println("Lese Daten");
Serial.print(mySerial.read(), HEX);
Serial.print(" ");
delay(20);
}
Serial.println();

Serial.print("test ");
Serial.print(millis()); // print timer serial
Serial.println(" ");
}


// FS20 Device Command ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void sendCommand(char thisCMDID, char thisCMDLEN, char thisHC1, char thisHC2, char thisDevice, char thisCommand, char thisExtension)
{
mySerial.write(thisCMDID); // send start byte
mySerial.write(thisCMDLEN); // send length of command string
mySerial.write(0xF1); // send Command ID 0xF1 = Send command only one time
mySerial.write(thisHC1); // send House Code 1
mySerial.write(thisHC2); // send House Code 2
mySerial.write(thisDevice); // send Device Adress
mySerial.write(thisCommand); // send Command
mySerial.write(thisExtension); // send Command extension
delay(10); // wait 10ms until next command
return;
}