1-Wire

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

1-Wire

Beitrag von JoeHMS » 23.04.2013, 10:44

Hallo,

ich wollte mal fragen ob in der Richtung 1Wire mit USB Stick an der CCU noch was geplant ist. Dann warte ich noch.
Für ein aktuelles Projekt brauche ich 6 Temp. Sensoren und die wären mit 18S20 1wire am günstigsten zu lösen.
Falls da nicht mehr mit zu rechnen ist, muss ich die Bastellösung aus dem Forum nehmen um die Temp. Sensoren auszulesen oder meinen CUL verkaufen und mir nen CUNO zulegen. Über eine Antwort würde ich mich freuen.

Grüßle, Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 240 Mal
Kontaktdaten:

Re: 1-Wire

Beitrag von uwe111 » 23.04.2013, 13:01

Hallo Jochen,

1-Wire steht natürlich neben anderen Erweiterungen auch auf meiner Liste. Da ich dieses Projekt aber als einziger und nur in meiner Freizeit betreue, kann ich keine Termine nennen. Also an Deiner Stelle würde ich nicht auf zukünftige CUxD-Funktionen warten und schon gar kein Projekt davon abhängig machen.

Wenn jedoch die Möglichkeit besteht, durch relativ geringe Anpassungen/Erweiterungen im CUxD (z.B. des Thermo-Wrapper Devices) die 1-Wire Sensoren über ein Script- bzw. Programmaufruf (z.B. Digitemp) an dieses Device zu koppeln (siehe als Beispiel die DMX-Ansteuerung), dann könnte ich das auch kurzfristig tun.
Dazu brauche ich dann aber Zuarbeit.

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: 1-Wire

Beitrag von JoeHMS » 07.05.2013, 21:26

Hallo Uwe,

ich habe mir nun den LinkUSBi http://www.fuchs-shop.com/de/shop/17/1/13372210/ mit einigen 18s20 Sensoren bestellt. Ist alles vorhin angekommen und ich habe gleich mal probiert.

Per Telnet auf der CCU eingeloggt und den Adapter an den USB Port gesteckt.
dmesg liefert:

Code: Alles auswählen

ftdi_sio 1-1:1.0: FTDI USB Serial Device converter detected
drivers/usb/serial/ftdi_sio.c: Detected FT232RL
usb 1-1: FTDI USB Serial Device converter now attached to ttyUSB0
Wurde also sofort korrekt erkannt.
Dann habe ich per FTP das Verzeichnis "/usr/local/addons/1wire" angelegt und das digitemp von owagner http://homematic-forum.de/forum/downloa ... hp?id=2175 aus diesem Thread http://homematic-forum.de/forum/viewtop ... =32#p34835 dorthin kopiert. Dann das File "digitemp_DS9097U" mit chmod 755 ausführbar gemacht.

Soweit sogut. war angenehm überrascht. An dieser Stelle vielen Dank an owagner und alle die schon mit digitemp Vorarbeit geleistet haben.

Dann geht´s weiter mit testen:

Code: Alles auswählen

cd /usr/local/addons/1wire
./digitemp_DS9097U -q -s /dev/ttyUSB0 -w
liefert sofort ein Ergebnis mit einem angeschlossenen 18s20:

Code: Alles auswählen

1048895502080077 : DS1820/DS18S20/DS1920 Temperature Sensor
015371731400001E : DS2401/DS1990A Serial Number iButton
Dann eine Configdatei erstellen:

Code: Alles auswählen

./digitemp_DS9097U -i -s /dev/ttyUSB0 -q -c ./digitemp.conf
Danach hat dann das auslesen schon geklappt:

Code: Alles auswählen

./digitemp_DS9097U -a -q -c ./digitemp.conf
liefert:

Code: Alles auswählen

May 07 21:24:22 Sensor 0 C: 20.75 F: 69.35
Damit funktioniert schonmal alles. Gib mir bitte Bescheid was ich weiter tun kann um dich bei der Integration zu unterstützen.

Gruß, Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: 1-Wire

Beitrag von JoeHMS » 07.05.2013, 21:40

Hallo nochmal,

hab noch etwas rumgespielt und das Ausgabeformat auf die Sensornummer und den Wert begrenzt.
Dafür habe ich die Config wie folgt modifiziert:

Code: Alles auswählen

TTY /dev/ttyUSB0
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT %s %.2C
SENSORS 1
ROM 0 0x10 0x48 0x89 0x55 0x02 0x08 0x00 0x77 
Ausgabe:

Code: Alles auswählen

/usr/local/addons/1wire # ./digitemp_DS9097U -a -q -c ./digitemp.conf
0 20.81
Datum und Uhrzeit hat man ja eh beim Aufruf und somit sollte das grabben der Werte einfacher sein.

Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 240 Mal
Kontaktdaten:

Re: 1-Wire

Beitrag von uwe111 » 07.05.2013, 22:28

Hallo Jochen,

liefert der Aufruf genau einen Wert und beendet sich das Programm danach?
Wie sieht es beim Anschluß von mehreren Sensoren aus?

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: 1-Wire

Beitrag von JoeHMS » 07.05.2013, 23:39

Hallo Uwe,

die Ausgabe kann man mit der Config Datei steuern.
Darin ist dann festgelegt wie die Daten ausgegeben werden.
Ein Aufruf in der Art:

Code: Alles auswählen

digitemp_DS9097U -a -q -c ./digitemp.conf
liefert mit der o.g. Config für jeden Sensor eine Zeile.
Der erste Wert ist die Sensor Nummer, der 2. Wert ist die Temperatur.

Man kann aber auch einen Aufruf per Sensor machen indem man folgende Syntax wählt:

Code: Alles auswählen

/usr/local/addons/1wire/digitemp_DS9097U -t 0 -q -c /usr/local/addons/1wire/digitemp.conf
Dies ruft den Wert des Sensor 0 ab. Allerdings hab ich hier die Config so angepasst, dass nur die Temperatur ausgegeben wird.

Fürs erste lese ich die Temperaturen nun mit diesem Script ein:

Code: Alles auswählen

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/1wire/digitemp_DS9097U -t 0 -q -c /usr/local/addons/1wire/digitemp.conf");
string TempPool = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
dom.GetObject("Temperatur Pool").State(TempPool);
WriteLine(TempPool);

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/1wire/digitemp_DS9097U -t 1 -q -c /usr/local/addons/1wire/digitemp.conf");
string TempFilter = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
dom.GetObject("Temperatur Filter").State(TempFilter);
WriteLine(TempFilter);

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("/usr/local/addons/1wire/digitemp_DS9097U -t 2 -q -c /usr/local/addons/1wire/digitemp.conf");
string TempAussen = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
dom.GetObject("Temperatur aussen").State(TempAussen);
WriteLine(TempAussen);
Das lasse ich alle 15 Minuten laufen, das reicht für die Temperaturen locker.
Da bei mir der CCUhistorian mitläuft (zumindest zwischen 6:00 Uhr und 24:00 Uhr) reicht mir das erst mal um die Temperaturen zu loggen. Schicker wäre es natürlich mit einer Integration als Temperaturfühler, aber das muss nicht sein. Hauptsache ich habe die Werte.

Bis jetzt habe ich aber nur einen Sensor dran. Die anderen verbaue ich morgen oder am Donnerstag. Ich hoffe das Script läuft dann tortzdem vernünftig. Wenn ich wüsste wie ich mit HMScript die zurückgegeben Werte trennen kann, würde natürlich ein einzelner Aufruf mit "-a " reichen. Dann müsste man in HMScript jede Zeile durchgehen, den Wert der Sensornummer einer Variablen und den der temp. einer weiteren zuweisen. Wäre dann ein Split am einziegen Leerzeichen der Zeile. Mit Perl wärs für mich kein Problem, mit HMScript momentan schon noch ;-).

Guats Nächtle :-)
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 240 Mal
Kontaktdaten:

Re: 1-Wire

Beitrag von uwe111 » 08.05.2013, 19:42

Hallo Jochen,

ok, wäre ein CUxD-Gerät in der Art wie "(28) System - Multidim" sinnvoll?
Man würde als Parameter die Digitemp Kommandozeile hinterlegen und hätte dann 16 Kanäle für Temperatursensoren.
Also könnte man in der Digitemp Konfiguration mit einem Aufruf maximal 16 Sensoren abfragen.
Das Ergebnis würde ich parsen und dann den Kanälen zuordnen.
Das Aufruf-Intervall könnte man auch als Geräteparameter setzen.
Macht das Sinn?
Reichen 16 Sensoren aus?

Viele Grüße,

Uwe.
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: 1-Wire

Beitrag von JoeHMS » 08.05.2013, 21:59

Hallo Uwe,

Das wäre klasse. Für mich reichen 16 Sensoren auf jeden Fall. Dem es nicht reicht, Dr kann dann doch einfach nochmal ein Gerät erzeugen oder?

Vielen Dank schon mal!

Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

Benutzeravatar
uwe111
Beiträge: 4807
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 240 Mal
Kontaktdaten:

Re: 1-Wire

Beitrag von uwe111 » 08.05.2013, 23:03

Hallo Jochen,
JoeHMS hat geschrieben: Für mich reichen 16 Sensoren auf jeden Fall. Dem es nicht reicht, Dr kann dann doch einfach nochmal ein Gerät erzeugen oder?
Wenn sich das mittels digitemp-config so konfigurieren lässt, im Prinzip schon.
Aber dann ist noch zu prüfen was passiert, wenn zufällig zwei digitemp Abfragen gleichzeitig auf einem 1-Wire Gateway laufen. Bricht der zweite Aufruf dann mit einem Fehler ab oder wartet er, bis das Gateway wieder verfügbar ist?
Das könntest Du vielleicht einmal testen.

Viele Grüße,

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

JoeHMS
Beiträge: 340
Registriert: 28.02.2012, 11:09
Danksagung erhalten: 1 Mal

Re: 1-Wire

Beitrag von JoeHMS » 19.05.2013, 10:58

Hallo Uwe,

hab da nun mal weiter probiert.
Habe aktuell 2 18s20 in Betrieb.
Wenn ich auf der Homematic 2 Shells öffne und zeitgleich mit "./digitemp_DS9097U -a -q -c ./digitemp.conf" die Temperatur abfrage, bleibt ein Prozess stehen und komt nicht mehr zurück. Der andere liefert die Temperatur, oder manchmal auch nicht, kommt aber zurück. Ich muss mal schauen was man mit den ganzen Schaltern von digitemp noch optimieren kann. Vielleicht muss man da noch was mit Timeouts usw einstellen.

Das Beste Ergebnis habe ich erziehlt, wenn ich digitemp so aufrufe "./digitemp_DS9097U -a -q -c ./digitemp.conf" und in der Konfig das Format so einstelle dass er jeweils die Sensornummer und den Wert ausgibt. Damit sind die Antwortzeiten am Besten:

Code: Alles auswählen

/usr/local/addons/1wire # ./digitemp_DS9097U -a -q -c ./digitemp.conf
0 20.56
1 15.63
Kannst Du das so parsen?

Gruß, Jochen
CCU3( 3.47.22 piVCCU3) auf RasPi4 * Wired * CUXD(2.3.3) mit CUL868 (v1.66), 1 Wire USB FTDI * Redmatic * Synology mit ccu-historian spk (V2.3.0) * ccu.io(1.0.51) * dashui(0.9beta120) openHAB 2.5.0 mit auf RasPI 4
-------------------------------------------------------------------------------------------------------------------
132 Kanäle in 38 Geräten und 140 CUxD-Kanäle in 21 CUxD-Geräten

Antworten

Zurück zu „CUxD“