OWX Next Generation

Begonnen von Prof. Dr. Peter Henning, 09 November 2016, 20:48:30

Vorheriges Thema - Nächstes Thema

JensS

Guten Abend,

mein FHEM meint nach einem Neustart, dass es OWID nicht laden kann:
ZitatToo many arguments for main::OWX_Verify at ./FHEM/21_OWID.pm line 326, near "0)"
Too many arguments for main::OWX_Verify at ./FHEM/21_OWID.pm line 389, near "0)"

Folgende Module sind installiert:
21_OWID.pm           14709 2017-07-13 18:47:05Z phenning
21_OWSWITCH.pm       13668 2017-03-11 14:24:14Z phenning
21_OWTHERM.pm        14699 2017-07-13 08:07:17Z phenning
00_OWX.pm            14108 2017-04-26 04:03:51Z phenning

Ein Bus (Arduino) läuft am USB mit der DS2482-Unterstützung Version 2.06 und ein Bus (ebenfalls Arduino) läuft mit der normalen OneWireFirmata Version 2.06.

Gruß Jens
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

ext23

Ich muss jetzt auch nochmal mein Problem mit dem OWLCD (az_OW_LCD1.version => 7.0beta6 (LCD firmware LCD1.00 06/30/11)) aufbringen, die Versionen hatte ich ja bereits gepostet. Ich habe ein Verhalten, dass ich nicht erklären kann. Das ist erst durch das ganze Modul Tetris gekommen. Vorher lief alles, ich habe also nichts an der Programmierung geändert. Hier ein Beispiel:

Ich habe ein Notify:
Alarmanlage:* {
  if ($EVENT eq "unscharf") {
    fhem ("delete Alarm_PushMessage_OpenDoor_Eingang") if (Value("Alarm_PushMessage_OpenDoor_Eingang") ne "");
  }

  if ($EVENT eq "scharf") {
    fhem( "set az_OW_LCD1 gpiobit 2 off" );  # Grüne LED aus
    fhem( "set az_OW_LCD1 gpiobit 3 on" );  # Rote LED an

    fhem ("delete Alarm_LCD_CLEAR_Line_1") if (Value("Alarm_LCD_CLEAR_Line_1") ne "");
    fhem ("delete Alarm_LCD_CLEAR_Line_2") if (Value("Alarm_LCD_CLEAR_Line_2") ne "");
    fhem ("delete Alarm_LCD_CLEAR_Line_3") if (Value("Alarm_LCD_CLEAR_Line_3") ne "");

    fhem ("set az_OW_LCD1 line 1 Status Alarmanlage:");
    fhem ("set az_OW_LCD1 line 2 ------ scharf ------");
    fhem ("set az_OW_LCD1 line 3 ");
  }
}


Ausgangssituation ist:
GPIO des LCD ist 7 (Also alles aus, Piepser und LEDs). Ich habe alle anderen Notifys die dazwischen funken könnten disabled.

Löse ich das oben gezeigte Notify mit einem Trigger aus:
trigger Alarmanlage scharf

Dann ist der GPIO status 0, also alles an, Pieper und alle LEDs. Erwartet ist, dass nur die Rote LED leuchtet. Der Text des LCD stimmt übrigens, das funktioniert noch alles. Ich habe wirklich nur Probleme mit den GPIOs.

pah, hast du noch eine Idee was das sein kann? Ich bin echt etwas Ratlos. Wo und wie aktiviere ich am besten das DEBUG, im OWX Hauptmodul?

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Prof. Dr. Peter Henning

Mal sehen, ob ich diesen Code bei mir nachstellen kann. Wird aber später, gehe jetzt erst einmal ein paar Stunden Golf spielen.

LG

pah

ext23

Zitat von: Prof. Dr. Peter Henning am 18 Juli 2017, 07:27:42
Mal sehen, ob ich diesen Code bei mir nachstellen kann. Wird aber später, gehe jetzt erst einmal ein paar Stunden Golf spielen.

Ach damals wo ich noch Student war, was hatte ich da noch Zeit ;-) Aber das eilt nicht, take your time, ich muss auch noch etwas für die Volkswirtschaft tun, der Tag hat ja erst angefangen...

Achso noch ein kleiner Nachtrag. Wenn ich die gpiobit einzeln manuell setze gibt es natürlich keine Probleme. Vielleicht irgend etwas mit dem Timing. Ich mach ja doch einiges schnell nacheinander mit dem OWLCD. Allerdings ist das sauber reproduzierbar.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

cwagner

Zitat von: Prof. Dr. Peter Henning am 17 Juli 2017, 09:15:55Mit dem Timing in der Routine OWXMULTI_GetValues($) so lange experimentieren, bis alle Fehler weg sind.

Die fraglichen Werte tauchen in den Aufrufen von


    OWX_Qomplex($master, $hash, "recall", 0,    $owx_dev, "\xB8\x00", 0,       1,       0,        undef,   0.015);
    OWX_Qomplex($master, $hash, "ds2438.getvad",   1,    $owx_dev, "\xBE\x00", 0,      20,       0,        \&OWXMULTI_BinValues,   0.015);
...


als letzter Parameter auf, hier bedeutet der Eintrag, dass bis zum nächsten Absetzen eines Befehl an dieses Device 15 Millisekunden gewartet werden muss. Eventuell kann man das auf 20 hochsetzen.

Hallo pah!
Habe nun in mehreren Schritten an allen 7 Stellen im Modul den Wert beim OWXMulti bis auf 0.040 hochgesetzt und meine, eine Verringerung festgestellt zu haben. Dennoch habe ich eine erkleckliche Zahl von Einträgen im Log, die fehlerhafte Daten monieren, dennoch finde ich zeitgleich Ausreißer in den Readings, die vom Regelwert krass abweichen:
2017.07.18 13:01:36 1: OWXMULTI_BinValues:  Airmonitor: conversion not complete or data invalid in context ds2438.getvdd0xe8 0x14 0xf3 0x01 0x00 0x00 0x40 0x81 0xff
2017.07.18 13:06:37 1: OWXMULTI_BinValues:  Airmonitor: conversion not complete or data invalid in context ds2438.getvdd0xf8 0x14 0xf2 0x01 0x00 0x00 0x40 0xb7 0xff
2017.07.18 13:26:07 1: OWXMULTI_BinValues:  Airmonitor: conversion not complete or data invalid in context ds2438.getvdd0x28 0x15 0xf3 0x01 0x00 0x00 0x40 0xe6 0xff
2017.07.18 13:29:07 1: OWXMULTI_BinValues:  Airmonitor: conversion not complete or data invalid in context ds2438.getvdd0x28 0x15 0xf3 0x01 0x00 0x00 0x40 0xe6 0xff
2017.07.18 13:39:37 1: OWXMULTI_BinValues:  Airmonitor: conversion not complete or data invalid in context ds2438.getvdd0x20 0x15 0xf3 0x01 0x01 0x00 0x40 0xbc 0xff
2017.07.18 18:12:04 1: OWXMULTI_BinValues:  Airmonitor: conversion not complete or data invalid in context ds2438.getvdd0xd0 0x15 0xf3 0x01 0x01 0x00 0x40 0xf8 0xff

4.99-4.98 = übliche Readings von VDD
2017-07-18_13:01:37 0.01
2017-07-18_13:06:37 0.01
2017-07-18_13:26:07 0.01
2017-07-18_13:29:07 0.01
2017-07-18_13:39:37 2.57
2017-07-18_18:12:05 2.57


Herzliche Grüße
Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

cwagner

Auch im Modul OWAD habe ich noch Ausreißer in Readings, die mit Meldungen im Log korrelieren. Offenbar erkennt das Modul die Fehler, speichert aber dennoch (?) den Wert:

2017.07.18 01:17:04 1: OWXAD_BinValues: context ds2450.getreading    Kollektor_Wandler: invalid CRC 0xfb 0x47 0x03 0x38 0x03 0xe0 0x45 0xa6 0x86 0x00
2017.07.18 12:02:53 1: OWXAD_BinValues: context ds2450.getreading    Kollektor_Wandler: invalid CRC 0xfb 0x1a 0x03 0x49 0x03 0x6d 0x59 0x91 0xed 0x00
2017.07.18 14:53:07 1: OWXAD_BinValues: context ds2450.getreading    Kollektor_Wandler: invalid CRC 0xfb 0xf0 0x02 0x34 0x03 0xfa 0x5b 0x8b 0x38 0x00
2017.07.18 18:20:05 1: OWXAD_BinValues: context ds2450.getreading    Kollektor_Wandler: invalid CRC 0xfb 0x40 0x03 0x5d 0x03 0x36 0x5a 0xa5 0xbe 0x00

5.039= üblicher Wert dieses Readings
2017-07-18_01:17:04 1.440
2017-07-18_12:02:53 0.540
2017-07-18_14:53:07 4.820
2017-07-18_18:20:05 1.300


Ich setzte insgesamt vier DS2450 an einem USB-Master (neben aktuell ebenso vielen DS2438) ein...

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

UweH

Hallo pah,

seit dem Update von OWVAR auf Version 7.0 am 17.07. meldet sich mein 1-Wire-Poti (Stellantrieb_AZ) immer mal wieder mit folgendem Statement:

2017.07.19 11:00:37 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff

Das Poti an sich funktioniert aber. Der Log-Eintrag wird nicht erzeugt, wenn ich einen value setze.

Gruß
Uwe


Prof. Dr. Peter Henning

Wird der Wert denn auch gesetzt, wenn diese Meldung auftaucht ?

LG

pah

UweH

Ich gehe mit hoher Wahrscheinlichkeit davon aus, dass der Wert in dem Moment nicht gesetzt wird. Das Poti regelt meinen 0-10V-Stellantrieb am Heizkörper, und selbst hier in Hamburg ist es zur Zeit so warm, dass nicht geheizt werden muss...  :)
so sieht das Log seit Mittag aus:

2017.07.19 12:01:12 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.19 12:31:16 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.19 13:01:21 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.19 14:01:28 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.19 15:01:37 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.19 16:01:46 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff


Falls es weiterhilft:
# $Id: 21_OWAD.pm 2017-05 pahenning $
21_OWCOUNT.pm            14719 2017-07-15 03:27:23Z phenning
21_OWID.pm               14709 2017-07-13 18:47:05Z phenning
# $Id: 21_OWMULTI.pm 2017-05 - pahenning $                                 
# $Id: 21_OWSWITCH.pm 2017-05 pahenning $
21_OWTHERM.pm            14699 2017-07-13 08:07:17Z phenning
21_OWVAR.pm              14699 2017-07-13 08:07:17Z phenning
# $Id: 00_OWX.pm 2016-11 pahenning $
# $Id: 11_OWX_SER.pm 2017-03 - pahenning $
# $Id: 11_OWX_TCP.pm 2016-11 - pahenning $


Gruß
Uwe

UweH

Eben habe ich es tatsachlich provozieren können, dabei wurde der letzte Eintrag erzeugt. Der Intervall von einer Stunde deutet drauf hin, dass PID20 einmal pro Stunde den Wert neu setzt, obwohl ich kein solches Intervall finde. In der Nacht gibt es keine Logeinträge, weil PID20 da deaktiviert ist.

Und zwar wird der Logeintrag erzeugt, wenn von PID20 der value 0.000 gesetzt wird. Manuell gebe ich nur eine 0 ein, da passiert nichts.


2017.07.20 07:00:05 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.20 08:00:18 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.20 09:00:26 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.20 09:27:05 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff


Gruß
Uwe


Prof. Dr. Peter Henning

Äh - was ist PID20 ?

LG

pah

UweH

https://wiki.fhem.de/wiki/PID20_-_Der_PID-Regler

Damit regele ich in meinem Arbeitszimmer die Heizung in Verbindung mit dem 1-Wire-Poti und einem 0-10V Stellantrieb.

Gruß
Uwe

Prof. Dr. Peter Henning

Setzt doch mal bei dem Poti-Device verbose auf 5, ich würde gerne sehen, welche Bitsequenz geschickt und empfangen wird (bei dem stündlichen Update).

LG

pah

ext23

pah konntest du mein Problem irgendwie nachstellen?

reicht eigentlich ein Verbose 5 auf dem LCD Modul oder muss ich auch das OWX auf Verbose 5 stellen?!? Ich möchte mal ein bissel schauen was so geloggt wird.

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

UweH

Zitat von: Prof. Dr. Peter Henning am 20 Juli 2017, 14:26:37
Setzt doch mal bei dem Poti-Device verbose auf 5, ich würde gerne sehen, welche Bitsequenz geschickt und empfangen wird (bei dem stündlichen Update).

LG

pah
So, mal exemplarisch drei Einträge, das sieht dann so aus. Offenbar wird vom PID20 doch "nur" ein value 0 gesetzt. Ich dachte, die 0.000 kommt vom PID20.

2017.07.20 19:01:57 4: OWVAR: Set Stellantrieb_AZ value 0
2017.07.20 19:01:57 1: OWXVAR_BinValues called for device Stellantrieb_AZ in context setstate with data 0x55 0x2c 0xcb 0xaf 0x07 0x00 0x00 0x00 0x57 0x0f 0xff
2017.07.20 19:01:57 1: OWXVAR_BinValues setstate:    Stellantrieb_AZ: no error, 0xff
2017.07.20 19:01:57 1: OWXVAR_BinValues called for device Stellantrieb_AZ in context release with data 0x55 0x2c 0xcb 0xaf 0x07 0x00 0x00 0x00 0x57 0x96 0xff
2017.07.20 19:01:57 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.20 20:02:05 4: OWVAR: Set Stellantrieb_AZ value 0
2017.07.20 20:02:05 1: OWXVAR_BinValues called for device Stellantrieb_AZ in context setstate with data 0x55 0x2c 0xcb 0xaf 0x07 0x00 0x00 0x00 0x57 0x0f 0xff
2017.07.20 20:02:05 1: OWXVAR_BinValues setstate:    Stellantrieb_AZ: no error, 0xff
2017.07.20 20:02:06 1: OWXVAR_BinValues called for device Stellantrieb_AZ in context release with data 0x55 0x2c 0xcb 0xaf 0x07 0x00 0x00 0x00 0x57 0x96 0xff
2017.07.20 20:02:06 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff
2017.07.20 21:02:13 4: OWVAR: Set Stellantrieb_AZ value 0
2017.07.20 21:02:13 1: OWXVAR_BinValues called for device Stellantrieb_AZ in context setstate with data 0x55 0x2c 0xcb 0xaf 0x07 0x00 0x00 0x00 0x57 0x0f 0xff
2017.07.20 21:02:13 1: OWXVAR_BinValues setstate:    Stellantrieb_AZ: no error, 0xff
2017.07.20 21:02:13 1: OWXVAR_BinValues called for device Stellantrieb_AZ in context release with data 0x55 0x2c 0xcb 0xaf 0x07 0x00 0x00 0x00 0x57 0x96 0xff
2017.07.20 21:02:13 1: OWXVAR_BinValues release :    Stellantrieb_AZ: invalid data 0xff


Ein list vom Poti sieht so aus. Und da tauchen nun die 0.000 auf:
   ASYNC      0
   CFGFN
   DEF        DS2890 CBAF07000000
   ERRCOUNT   107
   IODev      1wire_USB
   NAME       Stellantrieb_AZ
   NEXTSEND   1500577935.43206
   NOTIFYDEV  global
   NR         299
   NTFY_ORDER 50-Stellantrieb_AZ
   OW_FAMILY  2C
   OW_ID      CBAF07000000
   PRESENT    1
   ROM_ID     2C.CBAF07000000.57
   STATE      value: 0.000 %
   TYPE       OWVAR
   owg_val     0.00
   READINGS:
     2017-07-20 21:12:14   state           value: 0.000 %
     2017-07-20 21:12:14   value           0.000
Attributes:
   IODev      1wire_USB
   group      Heizung AZ
   model      DS2890
   room       Heizung
   verbose    5


Gruß
Uwe