OWX asynchron überarbeitet

Begonnen von ntruchsess, 30 Juni 2013, 00:55:59

Vorheriges Thema - Nächstes Thema

Joachim

Moin @ all, moin Norbert,

Es liegt definitiv an der fehlenden CRC-Prüfsumme.
Häßlicher würg-around von jemandem, der keine Ahnung von Perl hat.

- fhem starten mit folgendem OWX-Eintrag in der fhem.cfg

define 1_Wire OWX /dev/ttyUSB<NUMMER>
attr 1_Wire room OWX

- get <name> devices
- CRC-Summe von jedem 1-Wire device merken (steht bei Internals --> ROM_ID, diese hier: 28.1FB08704000.EF
- sace config
- FHEM stoppen
- in der fhem.cfg die gemerkte CRC  im define anfügen und speichern
"define Temp_Sensor_Badezimmer OWTHERM DS18B20 7556BA0300000A 300"
- in der Datei 21_OWTHERM.pm ab Zeile 188 bis 212 folgende Änderungen durchführen:

#-- model, 14 characters
  } elsif(  $a3 =~ m/^[0-9|a-f|A-F]{14}$/ ) {
    $model         = $a[2];
    $id            = substr($a[3],0,11);
    $crc           = substr($a[3],12,2);
    if(int(@a)>=5) { $interval = $a[4]; }
    if( $model eq "DS1820" ){
      $fam = "10";
      CommandAttr (undef,"$name model DS1820");
    }elsif( $model eq "DS1822" ){
      $fam = "22";
      CommandAttr (undef,"$name model DS1822");
    }elsif( $model eq "DS18B20" ){
      $fam = "28";
      CommandAttr (undef,"$name model DS1822");
    }else{
      return "OWTHERM: Wrong 1-Wire device model $model";
    }
  } else {   
    return "OWTHERM: $a[0] ID $a[2] invalid, specify a 12 or 2.12 digit value";
  }
 
  #-- determine CRC Code
  #$crc = defined($hash->{IODev}->{INTERFACE}) ?  sprintf("%02x",OWX_CRC($fam.".".$id."00")) : "00";

FHEM neu starten, und die Temperatursensoren werden erkannt und liefern Temperaturen.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ntruchsess

danke Joachim,

das war mir noch nicht bekannt/bewusst. Den equivalenten Fehler habe ich im synchronen Strang schon behoben, werde ich tunlichst mal in den Asynchronen Branch mergen.

Gruß,

Norbert
while (!asleep()) {sheep++};

Joachim

Moin Norbert,

Danke ersteinmal für Deine Rückmeldung.
soll ich mir die Fehlerbehebung ersteinmal aus dem Syncronen Strang klauen, damit ich weitertesten kann?
Da läuft noch einiges nicht so ganz rund, und heute habe ich noch etwas Zeit.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Joachim

Moin Norbert,

nächste Fehlermeldungen:
1.)

2013.12.08 18:50:55.344 5: OWX_SER::Search: new alarm device found 28.212772040000.07
2013.12.08 18:50:57.004 1:  Alarms = 28.212772040000.07

ein "get Temp_Sensor_Kuehltruhe alarm" liefert:

OWTHERM: Temp_Sensor_Kuehltruhe.alarm => L 0 H 50

als Attributes sind eingetragen:

tempHigh -18
tempLow  -25


2.)
Die Scrollfenster für get bieten alle Möglichkeiten auf einmal, siehe Anhang.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ntruchsess

kurze Nachfrage:

verwendest Du den code von https://github.com/ntruchsess/fhem_owx
oder von https://github.com/ntruchsess/fhem-mirror/tree/owx_async
?

Das obere Repository (fhem_owx) hat den Stand von vor 5 Monaten, das untere ist mein fhem-mirror, in dem ich die OWX-fixes der letzten Zeit schon alle in den asynchronen Zweig gemerged habe (mergen geht repository-übergreifend nur 'zu Fuß')

- Norbert
while (!asleep()) {sheep++};

Joachim

Den hier:
https://github.com/ntruchsess/fhem_owx/tree/refactoring_async/fhem/FHEM
war nach meiner meinung der aktuellste
Zitatim Prinzip ist der Stand so, wie bei meinem letzten Beitrag:
ZitatAlle Module wie bisher auf Github.

dann nehme ich mal den anderen.

Danke Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

Joachim

So, ist installiert, und meine Sensoren werden alle erkannt.
DropDown-Menues sind auch in ordnung,
allerdings immer noch der Alarm bei negativen Temperaturen.
Hier das Define:

define Temp_Sensor_Kuehltruhe OWTHERM DS18B20 212772040000 300
attr Temp_Sensor_Kuehltruhe IODev 1_Wire
attr Temp_Sensor_Kuehltruhe model DS18B22
attr Temp_Sensor_Kuehltruhe room Kueche
attr Temp_Sensor_Kuehltruhe tempHigh -18
attr Temp_Sensor_Kuehltruhe tempLow -25
attr Temp_Sensor_Kuehltruhe event-min-interval temperature:600
attr Temp_Sensor_Kuehltruhe event-on-change-reading temperature
attr Temp_Sensor_Kuehltruhe icon icoKLIMA
attr Temp_Sensor_Kuehltruhe stateFormat {sprintf("%.1f",ReadingsVal("$name","temperature",0))."°C"}

und hier der Alarm aus dem Log:

2013.12.08 21:51:32.502 1:  Alarms = 28.212772040000.07


Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ntruchsess

#37
prima, ich wußte doch, dass ich da vor 5 Wochen schon einiges gefixed hatte. Danke für's testen!
Der Fehler mit dem CRC sollte da auch schon behoben sein.

dann schau ich mir das mit den Alarmen gleich mal an.

- Norbert
while (!asleep()) {sheep++};

Joachim

Moin Norbert,

Die Konsole wirft auch noch eine Fehlermeldung:

pi@FHEM-SERVER ~ $ cd /opt/fhem
pi@FHEM-SERVER /opt/fhem $ sudo perl fhem.pl fhem.cfg
pi@FHEM-SERVER /opt/fhem $ Scalar value @dataThroughput[0] better written as $dataThroughput[0] at ./FHEM/42_SYSMON.pm line 564, <> line 2.
Scalar value @dataThroughput[0] better written as $dataThroughput[0] at ./FHEM/42_SYSMON.pm line 564, <> line 2.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
Use of uninitialized value in string ne at fhem.pl line 3464.
pi@FHEM-SERVER /opt/fhem $


Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ntruchsess

hast Du jetzt den ganzen Branch (https://github.com/ntruchsess/fhem-mirror/tree/owx_async) ausgecheckt, oder nur die OWX-module? (müsste ich wg. des fhem.pl-standes wissen)
while (!asleep()) {sheep++};

Joachim

Aus Faulheit habe ich den ganzen ZIP-Ordner genommen, aber nur die OWX-Module in meine Installation übernommen.

$Id: fhem.pl 4323 2013-12-03 21:06:40Z rudolfkoenig $

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ntruchsess

danke, passt schon, ich merge mir eh gleich mal den aktuellen fhem-Stand in den branch.
while (!asleep()) {sheep++};

Joachim

Jetzt habe ich nocheinmal eine bescheidene Frage,

Um OWX asyncron zu bekommen, welche Einträge sind die richtigen, verstehe die englische Erklärung nicht wirklich.


define 1_Wire OWX /dev/ttyUSB1
attr 1_Wire room OWX
attr 1_Wire async 1         <------ asynchon einschalten?
attr 1_Wire dokick 1      <------ OWX startet die Temperaturwandlung?

muss dann auch in OWTHERM das attr tempConv gesetzt werden, also so:

define Temp_Sensor_Kuehltruhe OWTHERM DS18B20 212772040000 300
attr Temp_Sensor_Kuehltruhe IODev 1_Wire
attr Temp_Sensor_Kuehltruhe model DS18B22
attr Temp_Sensor_Kuehltruhe tempConv onkick      <----------
attr Temp_Sensor_Kuehltruhe room Kueche
attr Temp_Sensor_Kuehltruhe tempHigh -18
attr Temp_Sensor_Kuehltruhe tempLow -25
attr Temp_Sensor_Kuehltruhe event-min-interval temperature:600
attr Temp_Sensor_Kuehltruhe event-on-change-reading temperature
attr Temp_Sensor_Kuehltruhe icon icoKLIMA
attr Temp_Sensor_Kuehltruhe stateFormat {sprintf("%.1f",ReadingsVal("$name","temperature",0))."°C"}

und müssen dann alle Sensoren im gleichen Abstand ausgelesen werden?

Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232

ntruchsess

dokick sorgt dafür, dass OWX die Temperaturwandlung für alle DS18B20 gleichzeitig startet (funktioniert nur bei aktiv, also nicht parasitär spannungsversorgten Devices), das Auslesen ist allerdings nicht automatisch darauf abgestimmt, wenn man die DS28B20 häufger als das owx intervall abfragt bekommt man mehrfach die gleichen Werte).
async=0 schaltet den asynchronen modus aus (beim DS2480 oder LinkUSBi ist als default async angeschaltet, auch wenn man kein attr async sieht).
Wenn man nicht alle DS18B20 mit dem gleichen Interval abfragen will, dann setzt man kein dokick. Ist im asynchronen Modus auch nicht wirklich nützlich, da das FHEM ja während der Sekunde Wartezeit nicht blockiert wird.

- Norbert
while (!asleep()) {sheep++};

Joachim

Moin Norbert,
Danke für die Erklärung.

Erste kurze Rückmeldung, OWX ist 24 Stunden sauber durchgelaufen, System scheint insgesamt weniger Freezes zu haben, allerdings scheint mir die Last des Moduls relativ hoch. Hier werde ich noch einige Tests und Vergleiche machen, und mich dann wieder melden.
Wenn ich von Deiner Seite aus noch irgendetwas ausprobieren kann, sag bescheid.

Gruß Joachim
FHEM aktuellste Version auf FB 7570 und 7390 mit Zebradem Toolbox Freetz
FHEM auf Raspberry
1-Wire mit LinkUSBi und Rs-Pi ds2482-800  1-Wire-9 Board; Max mit Cube, HMLAN
div. 1-Wire Sensoren; MAX-Thermostaten; Homematic-Komponenten, Zehnder KWL über RS-232