Naja, bei Sendern mit 5 Sensoren geht häufiger etwas verloren,
als bei Sendern mit nur einem Sensor.
Zumindest ist das unsere Erfahrung.
Entwicklung: Temperatur Funk Sensor
-
meigrafd -
23. August 2013 um 13:46 -
Erledigt
-
-
Entwicklung: Temperatur Funk Sensor? Schau mal ob du hier fündig wirst!
-
Hallo Zusammen,
bin gerade dabei meine Sender mit den neuen Watchdog Sketches auszustatten, um die Batterien nicht so oft wechseln zu müssen :thumbs1:
Bei den DS18B20 Sendern hat alles super geklappt, nur der Reed-Switch will noch nicht so recht. Habe den aktuellen "Send_ReedSwitch_Watchdog.ino" von GitHub genommen und lediglich die SenderID angepasst.
Am Empfänger kommt aber nur folgendes an: "11 @h~??9?y$?"
11 stimmt noch, dass ist die SenderID, aber den rest kann ich mir nicht erklären!?
Außerdem hängt der Sender sich nachdem er das rausgeschickt hat auf und muss erst vom Strom getrennt werden...Muss hier noch etwas im Receiver Sketch angepasst werden?
EDIT:
- Hat sich erledigt, im Send_ReedSwitch_Watchdog.ino ist die Verschlüsselung standardgemäß aktiviert...Vielen Dank vorab
Grüße
bigdane
-
Naja, bei Sendern mit 5 Sensoren geht häufiger etwas verloren,
als bei Sendern mit nur einem Sensor.
Zumindest ist das unsere Erfahrung.In welchem Zusammenhang? Klartext oder Binär?
-
Klartext
-
Und das ist bei binär anders?
Hast du denn auch msg[26] erhöht?
-
Habe bisher auch nichts verloren.
Aber zum Verständnis, wenn ich dies nicht falsch verstehe, dann kann die Übertragung auch bei der original FW des RFM12Pi sozusagen im Klartext erfolgen ohne Binär-Anteil.
Sender ist auf Klartext umgestellt, der RFM12Pi empfängt einen String ASCII codiert, der im perl wieder zurück konvertiert wird (im Groben):
Sender:
Code
Alles anzeigen... char msg[26]; ... //Vcc strcpy(msg,"v="); itoa(supplyV,&msg[strlen(msg)],10); //Temp/DS18B20 strcat(msg,"&r0="); itoa(temp,&msg[strlen(msg)],10); //Moisture strcat(msg,"&r1="); itoa(moisture,&msg[strlen(msg)],10); //=> z.B. "v=4434&r0=406&r1=647" ... rf12_sendStart(0, (uint8_t *)msg, strlen(msg));
Empfänger (RFM12Pi) mit Original FW (z.B. Full*) und konfiguriert auf 433Mhz, ... :Code... Empfängt ASCII: 35 118 61 52 52 51 52 38 114 48 61 52 48 54 38 114 49 61 54 52 55 und leitet es über Serial an perl Script ...
Empfänger (perl):Code
Alles anzeigen... bekommt dies über Serial und konvertiert ASCII zurück zu String/Char: v=4434&r0=406&r1=647 erster ASCII Wert ist die NodeID (ggf. -32 notwendig) ... my $line = trim(<SERIAL>); my @values = split(' ', $line); my $word = pack("C*", @values); $word =~ s/^.//; print "--- DATA RECEIVED ---\n"; print $line; print "\r\n"; //ASCII print $word; print "\r\n"; //Char/String ...
-
Hallo Zusammen,
könnt Ihr einen guten und günstigen USB ISP Programmer empfehlen, mit dem man den TinyTX4 und -RX4 programmieren kann?
Ist über den ISP Anschluss des Tinys eigentlich auch ein Zugriff auf die (Software-)Serielle Console möglich fürs Debugging?
Ich las gerade den von Maigraf verlinkten Artikel (http://blog.stevemarple.co.uk/2012/07/av...using.html) und frage mich nun, ob es für den Pi ein Risiko darstellt, ohne die beschriebene Extra Hardware als Programmer eingesetzt zu werden.
Ausserdem finde ich es nicht so prickelnd, auf die alte spezial Version von AVRDUDE angewiesen zu sein - das ist doch nach wie vor Stand der Dinge oder?Welche Art Kabel verwendet Ihr für das Flashen der Tinys?
EDIT: Ich habe noch eine Frage bzgl der Stromversorgung. In Eagle messe ich auf dem TinyTX4 Board einen Abstand der VCC Pins von 2,54mm. Ist das korrekt? Ich würde gerne sowas verwenden an dieser Stelle:
http://www.reichelt.de/RIA-Stecksyste…SET=500&WKID=0&
Leider haben die schmalsten wohl einen Abstand/Rastermaß von 3,5mm. Vielleicht könnte man vor der Sammelbestellung das Maß der VCC Kontakte noch auf 3,5mm erweitern?EDIT2: Es gibt wohl welche mit 2,54 Maß - die sind aber verflucht teuer! Ach ne, die haben zwei Leiter und zwei Plastikhubbel - man bräuchte also vier Löcher. Es bleibt also dabei, es wäre richtig schön, wäre der Abstand auf der Platine ein bisschen größer.
Danke für die Hilfe!
Gruß Pfanni
-
Hat schon jemand mit dem neuen Pi 2 die tinytx per isp geflasht?
Funktioniert das alte Spezial AVRdude hier (armv7) noch?
Ich sehe gerade mit mancher Software für armhf gibt es mit dem neuen Pi Probleme?!
-
Ich bin mit dem 2,54 RM völlig zufrieden da Standard. Das Layout der TinyTX4 schnell noch verändern zu wollen weil du gerne einen anderen Abstand hättest um die von dir gewünschte Anschlußklemme dranbasteln zu können da dir eine mit 2.54 RM zu teuer erscheint finde ich schon etwas dreist...
-
Es war lediglich ein Vorschlag. Wird ja wohl gestattet sein bei einem Open Source Projekt.
Ich hätte dieses Intention deutlicher machen sollen.
Bzgl der anderen Fragen: usb isp Programmer, und raspberry Pi 2. Gibt es hier Erfahrung und Empfehlungen?
-
Ich habe nun folgende Config in die Boards Config geschrieben und den Flashvorgang wiederholt. Einen Bootloader habe ich nicht geflasht. Dieser sollte doch nicht notwendig sein oder?
atmega328_384_8.name=ATmega328 Optiboot @ 38,400baud w/ 8MHz Int. RC Osc.
atmega328_384_8.upload.protocol=arduino
atmega328_384_8.upload.maximum_size=30720
atmega328_384_8.upload.speed=38400atmega328_384_8.bootloader.low_fuses=0xE2
atmega328_384_8.bootloader.high_fuses=0xDE
atmega328_384_8.bootloader.extended_fuses=0x05
atmega328_384_8.bootloader.path=optiboot
atmega328_384_8.bootloader.file=optiboot_atmega328_384_8.hex
atmega328_384_8.bootloader.unlock_bits=0x3F
atmega328_384_8.bootloader.lock_bits=0x0Fatmega328_384_8.build.mcu=atmega328p
atmega328_384_8.build.f_cpu=8000000L
atmega328_384_8.build.core=arduino
atmega328_384_8.build.variant=standard -
Vielen Dank für deine Python Implementierung TinySensor.py.
Im Vergleich zu deinem Skript sieht mein aktuelles Python Skript zum Auslesen der seriellen Schnittstelle eher lumpig ausDaher bin ich gerade dabei auf dein Skript umzusteigen und habe es hierfür meinen Anforderungen entsprechend um die direkte Weiterleitung der Daten an FHEM erweitert.
Ich habe allerdings ein Problem beim Auslesen der seriellen Schnittstelle:
CodeTiny Sensors with RFM12B. Waiting for Data... Got data: 2 v=3413 NID:2 VCC:3.41v Voltage:3.41 Got data: &t=2018 Error splitting data Error: local variable 'sensorData' referenced before assignment
Mir scheint es, als würde in der While Schleife in der Main Funktion nicht alles aus der seriellen Schnittstelle gelesen werden, sondern erst der Teil bis zu dem "&" und dann der rest separat an die Funktion "processData" geschickt werden.
Kannst du den Fehler irgendwie nachvollziehen?
p.s. wenn ich über data = ser.readline() auslese funktioniert es, aber vermute du hattest einen Grund die Zeichen einzeln auszulesen?
Vielen Dank vorab
Beste Grüße
bigdane
-
Vielen Dank für deine Python Implementierung TinySensor.py.
Im Vergleich zu deinem Skript sieht mein aktuelles Python Skript zum Auslesen der seriellen Schnittstelle eher lumpig ausDaher bin ich gerade dabei auf dein Skript umzusteigen und habe es hierfür meinen Anforderungen entsprechend um die direkte Weiterleitung der Daten an FHEM erweitert.
Ich habe allerdings ein Problem beim Auslesen der seriellen Schnittstelle:
CodeTiny Sensors with RFM12B. Waiting for Data... Got data: 2 v=3413 NID:2 VCC:3.41v Voltage:3.41 Got data: &t=2018 Error splitting data Error: local variable 'sensorData' referenced before assignment
Mir scheint es, als würde in der While Schleife in der Main Funktion nicht alles aus der seriellen Schnittstelle gelesen werden, sondern erst der Teil bis zu dem "&" und dann der rest separat an die Funktion "processData" geschickt werden.
Kannst du den Fehler irgendwie nachvollziehen?
p.s. wenn ich über data = ser.readline() auslese funktioniert es, aber vermute du hattest einen Grund die Zeichen einzeln auszulesen?
Vielen Dank vorab
Beste Grüße
bigdane
Hi, wenn es funktioniert würde mich Deine fhem Anbindung mal interessieren
-
Hi, wenn es funktioniert würde mich Deine fhem Anbindung mal interessierenDas habe ich bisher auch ganz simpel gelöst...
Oben bei den Imports:
Und dann in der inserData Funktion:
Code
Alles anzeigenurl = "" if table == "Temperature": url = "http://192.168.2.5:8083/fhem?cmd.temp_" + str(node) + "=set%20temp_" + str(node) + "%20"+str(data) elif table == "ReedSwitch": url = "http://192.168.2.5:8083/fhem?cmd.reed_" + str(node) + "=set%20reed_" + str(node) + "%20"+str(data) if url != "": try: urllib.urlopen(url) except: print("Error sending data to FHEM")
Es wird quasi FHEM über die entsprechende URL aufgerufen und via URL Aufruf der Wert von Variablen gesetzt.
Grüße
bigdane
-
-
Das habe ich bisher auch ganz simpel gelöst...
Oben bei den Imports:
Und dann in der inserData Funktion:
Code
Alles anzeigenurl = "" if table == "Temperature": url = "http://192.168.2.5:8083/fhem?cmd.temp_" + str(node) + "=set%20temp_" + str(node) + "%20"+str(data) elif table == "ReedSwitch": url = "http://192.168.2.5:8083/fhem?cmd.reed_" + str(node) + "=set%20reed_" + str(node) + "%20"+str(data) if url != "": try: urllib.urlopen(url) except: print("Error sending data to FHEM")
Es wird quasi FHEM über die entsprechende URL aufgerufen und via URL Aufruf der Wert von Variablen gesetzt.
Grüße
bigdane
Danke,
das ist ja Pi- seitig, oder? Was muss ich auf fhem Seite einrichten? Sorry, bin noch relativ frisch bei fhem ... -
Hallo giovanne,
man kann die Funksender auch recht einfach in FHEM mit der JeeLib einbinden. Der hier entwickelte Empfänger wird als serielle Schnittstelle erkannt und nach Anpassung der JeeLib werden korrekte Werte angezeigt.
Siehe auch: http://forum.fhem.de/index.php?topic=17240.0
Und so siehts dann aus:
Gruß Kalle
-
man kann die Funksender auch recht einfach in FHEM mit der JeeLib einbinden. Der hier entwickelte Empfänger wird als serielle Schnittstelle erkannt und nach Anpassung der JeeLib werden korrekte Werte angezeigt.Das habe ich zu Beginn auch versucht. Ist für rein die FHEM Anbindung natürlich die saubere Lösung. Leider war das ganze damals nicht so kompatibel mit den hier entwickelten Sketches auf den Sendern und dem Empfänger.
Wenn ich mir den Thread im FHEM Forum anschaue sieht es mir auch nach dem RFM2PI Sketch aus...Grüße
Daniel
Danke,
das ist ja Pi- seitig, oder? Was muss ich auf fhem Seite einrichten? Sorry, bin noch relativ frisch bei fhem ...In der FHEM Config habe ich einfach einen Dummy angelegt:
Über den URL Aufruf aus dem Python Skript wird der Wert für den Dummy temp_2 gesetzt. Durch das attribut "alias" kannst du dem Dummy dann einen schöneren Namen geben.
Grüße
Daniel
-
bigdane69 und Kalle0103,
Danke für Eure Antworten und Hinweise.
Ich glaube ich würde/werde die Variante mit der URL Richtung FHEM bevorzugen, da ich dadurch etwas flexibler bin und meinen Empfänger/RFM12Pi nicht zwingend an dem Pi haben muss wo auch FHEM drauf läuft. Kann mich somit um das Empfangene weiterhin selber kümmern.
Aber mal sehen, ich habe derzeit erst mal ein Test- und Spiel-FHEM aufgesetzt, welches auf einem Pi ohne Empfänger läuft... -
Hi,
das Empfangs Sketch habe ich so gelassen, ich musste lediglich das Sender Sketch etwas anpassen. Es muss halt in einen JeeLink kompatiblen Container gepackt werden. Dem Empfänger ist es ja egal was er empfängt.
Gruß Kalle
-
Jetzt mitmachen!
Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!