Neues Modul: 98_Siro.pm (Ansteuerung von motorisierten Innensichtschutzrollos)

Begonnen von Dr. Smag, 27 September 2017, 00:14:49

Vorheriges Thema - Nächstes Thema

volschin

Zitat von: Dr. Smag am 18 Dezember 2017, 23:02:54
Das steht noch aus lizenzrechtlichen Gründen offen. D.h. die SIGNALduino-Software ist von Entwicklern programmiert worden, weshalb die Hardware dann vom Kunden selber geflasht werden muss.
Das ist eine sehr eigenwillige Interpretation der GPL v3 Lizenzbedingungen.
Es muss lediglich sichergestellt sein, dass die auf dem Stick eingespielte Code-Version auch veröffentlicht ist und ein Hinweis in der mitgelieferten Dokumentation.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Loki

Ich hatte heute nach einem Neustart folgenden Fehler im Log:

2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $oldstate in concatenation (.) or string at ./FHEM/98_Siro.pm line 748, <$fh> line 2035.
2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $newState in concatenation (.) or string at ./FHEM/98_Siro.pm line 748, <$fh> line 2035.
2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $newState in numeric lt (<) at ./FHEM/98_Siro.pm line 1648, <$fh> line 2035.
2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $newState in numeric gt (>) at ./FHEM/98_Siro.pm line 1649, <$fh> line 2035.


Das sollte man vielleicht abfangen.

Byte09

Zitat von: Loki am 20 Januar 2018, 21:03:33
Ich hatte heute nach einem Neustart folgenden Fehler im Log:

2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $oldstate in concatenation (.) or string at ./FHEM/98_Siro.pm line 748, <$fh> line 2035.
2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $newState in concatenation (.) or string at ./FHEM/98_Siro.pm line 748, <$fh> line 2035.
2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $newState in numeric lt (<) at ./FHEM/98_Siro.pm line 1648, <$fh> line 2035.
2018.01.20 14:28:23 1: PERL WARNING: Use of uninitialized value $newState in numeric gt (>) at ./FHEM/98_Siro.pm line 1649, <$fh> line 2035.



sollte hoffentlich mit morgigem update behoben sein.

gruss Byte09
Das sollte man vielleicht abfangen.

Loki

Ich weiß nicht, ob du diese Meldungen auch schon mit abfängst, aber hier noch 4 Einträge von heute morgen:

2018.01.21 07:21:49 1: PERL WARNING: Use of uninitialized value $hashstring in concatenation (.) or string at ./FHEM/98_Siro.pm line 1878.
2018.01.21 07:21:49 1: PERL WARNING: Use of uninitialized value $devicestring in concatenation (.) or string at ./FHEM/98_Siro.pm line 1886.
2018.01.21 07:21:49 1: PERL WARNING: Argument "undef" isn't numeric in division (/) at ./FHEM/98_Siro.pm line 1132.
2018.01.21 07:21:49 1: PERL WARNING: Argument "undef" isn't numeric in division (/) at ./FHEM/98_Siro.pm line 1133.

Invers

Ich habe heute ein Update gemacht und daher fhem neu gestartet.
Dabei ist mir aufgefallen, dass die Perlwarnungen beim Start beseitigt zu sein scheinen, allerdings ist mir auch aufgefallen, dass meine Rollos nach dem Neustart nicht aufgingen, weil fhem sich nicht gemerkt hatte, dass sie zu waren. Fhem zeigt also nach einem Neustart immer an, dass alle Rollos offen sind. Das ist leider nicht so toll. Kann man da zeitnahe was machen?
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Byte09

Zitat von: Invers am 22 Januar 2018, 08:59:36
Ich habe heute ein Update gemacht und daher fhem neu gestartet.
Dabei ist mir aufgefallen, dass die Perlwarnungen beim Start beseitigt zu sein scheinen, allerdings ist mir auch aufgefallen, dass meine Rollos nach dem Neustart nicht aufgingen, weil fhem sich nicht gemerkt hatte, dass sie zu waren. Fhem zeigt also nach einem Neustart immer an, dass alle Rollos offen sind. Das ist leider nicht so toll. Kann man da zeitnahe was machen?
Ich gehe da heute Abend nochmal ran , sollte so ja nicht sein .

Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


volschin

Zitat von: Invers am 22 Januar 2018, 08:59:36
Ich habe heute ein Update gemacht und daher fhem neu gestartet.
Dabei ist mir aufgefallen, dass die Perlwarnungen beim Start beseitigt zu sein scheinen, allerdings ist mir auch aufgefallen, dass meine Rollos nach dem Neustart nicht aufgingen, weil fhem sich nicht gemerkt hatte, dass sie zu waren. Fhem zeigt also nach einem Neustart immer an, dass alle Rollos offen sind. Das ist leider nicht so toll. Kann man da zeitnahe was machen?
Hatte mich schon gewundert, warum bei mir im HomeKit der Status auf einmal falsch war, aber das erklärt es. FHEM aktualisiert sich bei mir unbeaufsichtigt.
Intel NUC+Ubuntu 22.04+Docker+FHEM6
HomeMatic: HM-MOD-RPI-PCB+HM-USB-CFG2+hmland+diverse, HUE: Hue-Bridge, RaspBee+deCONZ+diverse
Amzn Dash-Buttons, Siro Rollos
4xRPi, 4xCO20, OWL+USB, HarmonyHub, FRITZ!Box 7590, Echo Dots+Show8, Logi Circle 2, HomeBridge
TIG Stack (Telegraf, InfluxDB, Grafana)

Byte09

Zitat von: volschin am 22 Januar 2018, 22:11:07
Hatte mich schon gewundert, warum bei mir im HomeKit der Status auf einmal falsch war, aber das erklärt es. FHEM aktualisiert sich bei mir unbeaufsichtigt.
Hi volschin , Hi invers

Probiert es Bitte mal mit der Version von heute aus dem svn.

Gruss byte09

Gesendet von meinem SM-G900F mit Tapatalk


Invers

Hi, alles super.
Ich hatte schon geantwortet, aber leider ist mein Beitrag verschwunden. Wer weiss, wo ich geschrieben hatte.
Also noch einmal:

Die Meldungen sind beseitigt. Allerdings ist mir noch etwas aufgefallen. Wenn ich den Befehl set Siro_WZR 90 sende, ist alles in Ordnung. Sende ich den selben Befahl aber erneut, bekomme ich eine Meldung:

PERL WARNING: Use of uninitialized value $command in hex at ./FHEM/98_Siro.pm line 426.

Es kommt also zum Fehler, wenn die Position schon angefahren wurde. Vielleicht kann man da was machen.
Ausserdem erkenne ich im Log jetzt nicht mehr, welches Rollo geschaltet wird. Früher konnte ich das am mit protokollierten Kanal erkennen. Kann man den Kanal bitte im Log mit protokollieren? Bei mehr als einem Rollo muss man schon wissen, wer geschaltet wurde, zumal ja keine Rückmeldungen vom Rollo erfolgen.

Bei Akku-Rollos ist es sehr unangenehm, wenn diese plötzlich leer sind und man will ins Bett, oder weg gehen. Ich habe daher die Idee, ein Attribut Ladezyklus zu nutzen, welches beierreichen eines Wertes ein Reading setzt, was ich dann weiter verwerten kann.
Ich habe festgestellt, dass meine Rollo-Akkus alle 45 Tage geladen werden müssen. Wenn man also im Attribut 45 eingeben könnte und das Reading zündet bei Erreichen, dann könnte ich mit DOIF ansagen lassen, dass ich laden muss. Momentan macht das mein Outlook. Wie macht ihr das mit dem rechtzeitigen Laden?

Sollte das eine doofe Idee sein, dann bitte einfach ignorieren.

Nochmal besten Dank für die erfolgreiche Korrektur.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Byte09

Zitat von: Invers am 23 Januar 2018, 21:08:03
Hi, alles super.
Ich hatte schon geantwortet, aber leider ist mein Beitrag verschwunden. Wer weiss, wo ich geschrieben hatte.
Also noch einmal:

Die Meldungen sind beseitigt. Allerdings ist mir noch etwas aufgefallen. Wenn ich den Befehl set Siro_WZR 90 sende, ist alles in Ordnung. Sende ich den selben Befahl aber erneut, bekomme ich eine Meldung:

PERL WARNING: Use of uninitialized value $command in hex at ./FHEM/98_Siro.pm line 426.

Es kommt also zum Fehler, wenn die Position schon angefahren wurde. Vielleicht kann man da was machen.
Ausserdem erkenne ich im Log jetzt nicht mehr, welches Rollo geschaltet wird. Früher konnte ich das am mit protokollierten Kanal erkennen. Kann man den Kanal bitte im Log mit protokollieren? Bei mehr als einem Rollo muss man schon wissen, wer geschaltet wurde, zumal ja keine Rückmeldungen vom Rollo erfolgen.

Bei Akku-Rollos ist es sehr unangenehm, wenn diese plötzlich leer sind und man will ins Bett, oder weg gehen. Ich habe daher die Idee, ein Attribut Ladezyklus zu nutzen, welches beierreichen eines Wertes ein Reading setzt, was ich dann weiter verwerten kann.
Ich habe festgestellt, dass meine Rollo-Akkus alle 45 Tage geladen werden müssen. Wenn man also im Attribut 45 eingeben könnte und das Reading zündet bei Erreichen, dann könnte ich mit DOIF ansagen lassen, dass ich laden muss. Momentan macht das mein Outlook. Wie macht ihr das mit dem rechtzeitigen Laden?

Sollte das eine doofe Idee sein, dann bitte einfach ignorieren.

Nochmal besten Dank für die erfolgreiche Korrektur.
Hi invers ,

Habe deinen Beitrag leider gerade erst gelesen , für heute ist aber Schluss,  das Bett ruft. Schaue mir das morgen an . Gruss Byte09

Gesendet von meinem SM-G900F mit Tapatalk


Byte09

Zitat von: Invers am 23 Januar 2018, 21:08:03
Hi, alles super.
Ich hatte schon geantwortet, aber leider ist mein Beitrag verschwunden. Wer weiss, wo ich geschrieben hatte.
Also noch einmal:

Die Meldungen sind beseitigt. Allerdings ist mir noch etwas aufgefallen. Wenn ich den Befehl set Siro_WZR 90 sende, ist alles in Ordnung. Sende ich den selben Befahl aber erneut, bekomme ich eine Meldung:

PERL WARNING: Use of uninitialized value $command in hex at ./FHEM/98_Siro.pm line 426.
.......


Hi Invers, den Fehler kann ich leider nicht reproduzieren . kannst du mir da ggf. nochmal ein LOG 5 schicken , mit ein paar Zeilen davor und dahinter ?

Das Log habe ich entsprechend geändert ( verbose 2 ):
2018.01.24 16:41:11 2: Siro_sendCommand: name -> Siro_5B417081 command -> stop  channel -> 1 bincmd -> 01010101

Mit dem Ladezyklus werde ich was machen . schaffe das aber erst am Wochenende. Sollen es denn einfach Tage sein , bei deren erreichen ein Event ausgelöst wird , oder wirkliche Betriebssekunden ( oder Minuten ) - also, in denen der Motor wirklich lief ? Und was soll nach dem EVENT mit dem Reading passieren ? manuelles resetten im Device ?

die geänderte Version habe ich erstmal hier angehängt, svn Update mache ich dann erst , wenn das neue ATTR eingebaut ist .

gruss Byte09

Byte09


Invers

Ich habe mal mit verbose 5 gelogged.
Ich bekomme aber nicht mehr raus, als hier gezeigt:
2018.01.24 16:52:59 1: Logfile gelöscht
2018.01.24 16:54:25 3: Siro_set: handing over to Siro_Send_Command with following arguments: off 80 0
2018.01.24 16:54:34 3: Siro_set: handing over to Siro_Send_Command with following arguments: position 80 0
2018.01.24 16:54:34 1: PERL WARNING: Use of uninitialized value $command in hex at ./FHEM/98_Siro.pm line 426.


Davor und danach - NICHTS, hier noch  mein List, damit du es probieren kannst:

Internals:
   CFGFN     
   CHANNEL    13
   DEF        84314CDD
   ID         84314CD
   IODev      sduino
   NAME       Siro_SZL
   NR         431
   NTFY_ORDER 50-Siro_SZL
   STATE      100
   TYPE       Siro
   Version    V 0.48
   state      100
   CODE:
     1          84314CDD
   READINGS:
     2018-01-24 16:57:10   action          no action
     2018-01-24 16:57:05   position        100
     2018-01-24 16:57:05   state           100
   helper:
     LastMODE   virtual
     MODE       virtual
     aktMsg     position 100 1516809425.74325
     lastMsg    stop 80 1516809274.61352
     lastProg   0
     lastparse 
     lastparse_stop stop 1509953324.4356
     parse_aborted 0
     position   100
     positiontimer 151.1
Attributes:
   IODev      sduino
   SignalLongStopRepeats 15
   SignalRepeats 8
   channel_send_mode_1 3
   cmdIcon    50:rc_RIGHT off:rc_UP on:rc_DOWN stop:rc_STOP
   comment    Geladen am:         Leer am:
16.10.2017          07.12.2017
11.12.2017
   devStateIcon {return '.*:fts_shutter_'.(int($state/10)*10)}
   down_auto_stop 0
   down_limit_mode_1 100
   eventMap   /position 50:50/
   fp_Rollo   415,175,2,links Schlafzimmer
   genericDeviceType blind
   invers_position 0
   operation_mode 1
   prog_fav_sequence prog,2,stop,2,stop,2,prog,2,stop,2,stop
   room       Rollo,Wohnzimmer
   time_down_to_favorite 9
   time_to_close 17
   time_to_open 18
   webCmd     stop:on:off:50


Bei mir ist der Fehler reproduzierbar und trifft auch auf jedes Rollos zu. Das hier ist nur ein Beispiel.
Lass dir Zeit. Die neue Version aus deinem Anhang werde ich jetzt einspielen.

Ich danke dir.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Byte09

hi invers,

ich werde ein reading 'motor-term' einbauen, welches einfach die motorlaufzeit mitzählt und bei , aber nur dann ein event auslöst , wenn ein im attr gesetzter wert erreicht wird. resetbar per 'set ...'

gruss Byte09

Invers

Hier noch das Log für die neue Version:
2018.01.24 17:09:33 1: Logfile gelöscht
2018.01.24 17:09:37 5: Siro_Set: aufgerufen -> cmd -> position args -> position 80 0
2018.01.24 17:09:37 5: Siro_Set:newposstate -> 80
2018.01.24 17:09:37 5: Siro_set: test auf double stop
2018.01.24 17:09:37 5: Siro_set: testprogmode -> 1516810177.55593
2018.01.24 17:09:37 5: Siro_set: lastprogmode -> 0
2018.01.24 17:09:37 5: Siro_set: lastaction -> position
2018.01.24 17:09:37 5: Siro_set: cmd -> position
2018.01.24 17:09:37 5: Siro_Set: teste autostop: 100 < 100  100 < 100 - position
2018.01.24 17:09:37 5: Siro_Set: nodrive -> false
2018.01.24 17:09:37 5: Siro_Set: direkt positiondrive: -> timing:(3.6 = 20*0.18) -> open runningtime:3.6 - modification in % :20
2018.01.24 17:09:37 5: Siro_Set: direkt positiondrive: -> setting timer to 3.6
2018.01.24 17:09:37 5: Siro_Set: kein stateupdate erfolgt
2018.01.24 17:09:37 3: Siro_set: handing over to Siro_Send_Command with following arguments: off 80 0
2018.01.24 17:09:37 5: Siro_sendCommand: hash -> HASH(0x49e54e0) - Siro_SZL -> cmd :off: - args -> off 80 0
2018.01.24 17:09:37 5: Siro_sendCommand: operationmode -> 1
2018.01.24 17:09:37 5: Siro_sendCommand: channel f�r OM1  -> 3
2018.01.24 17:09:37 2: Siro_sendCommand: name -> Siro_SZL command -> off  channel -> 3 bincmd -> 00010001
2018.01.24 17:09:37 5: Siro_set: runningtime -> 0.0712599754333496
2018.01.24 17:09:41 5: Siro_sendCommand: hash -> HASH(0x49e54e0) - Siro_SZL -> cmd :stop: - args -> stop  virtual
2018.01.24 17:09:41 5: Siro_sendCommand: operationmode -> 1
2018.01.24 17:09:41 5: Siro_sendCommand: channel f�r OM1  -> 3
2018.01.24 17:09:41 2: Siro_sendCommand: name -> Siro_SZL command -> stop  channel -> 3 bincmd -> 01010101
2018.01.24 17:09:41 5: Siro_Position_down_stop: completed -> state:80
2018.01.24 17:10:31 5: Siro_Set: aufgerufen -> cmd -> position args -> position 80 0
2018.01.24 17:10:31 5: Siro_Set:newposstate -> 80
2018.01.24 17:10:31 5: Siro_set: test auf double stop
2018.01.24 17:10:31 5: Siro_set: testprogmode -> 1516810231.18026
2018.01.24 17:10:31 5: Siro_set: lastprogmode -> 0
2018.01.24 17:10:31 5: Siro_set: lastaction -> stop
2018.01.24 17:10:31 5: Siro_set: cmd -> position
2018.01.24 17:10:31 5: Siro_Set: teste autostop: 100 < 100  80 < 100 - position
2018.01.24 17:10:31 5: Siro_Set: nodrive -> false
2018.01.24 17:10:31 5: Siro_Set: direkt positiondrive: -> setting timer to 0
2018.01.24 17:10:31 5: Siro_Set: kein stateupdate erfolgt
2018.01.24 17:10:31 3: Siro_set: handing over to Siro_Send_Command with following arguments: position 80 0
2018.01.24 17:10:31 5: Siro_sendCommand: hash -> HASH(0x49e54e0) - Siro_SZL -> cmd :position: - args -> position 80 0
2018.01.24 17:10:31 5: Siro_sendCommand: operationmode -> 1
2018.01.24 17:10:31 5: Siro_sendCommand: channel f�r OM1  -> 3
2018.01.24 17:10:31 1: PERL WARNING: Use of uninitialized value $command in hex at ./FHEM/98_Siro.pm line 447.
2018.01.24 17:10:31 2: Siro_sendCommand: name -> Siro_SZL command -> position  channel -> 3 bincmd -> 00000000
2018.01.24 17:10:31 5: Siro_set: runningtime -> 0.00667715072631836
2018.01.24 17:10:31 5: Siro_sendCommand: hash -> HASH(0x49e54e0) - Siro_SZL -> cmd :stop: - args -> stop  virtual
2018.01.24 17:10:31 5: Siro_sendCommand: operationmode -> 1
2018.01.24 17:10:31 5: Siro_sendCommand: channel f�r OM1  -> 3
2018.01.24 17:10:31 2: Siro_sendCommand: name -> Siro_SZL command -> stop  channel -> 3 bincmd -> 01010101
2018.01.24 17:10:31 5: Siro_Position_down_stop: completed -> state:80


Jetzt sind es im Normalfall 3 Zeilen, die gelogged werden. Ich hatte gehofft, dass man einfach an die Logzeile den Kanal anhängen kann, so dass es bei einer Zeile bleibt:


alt: 2018.01.24 16:54:25 3: Siro_set: handing over to Siro_Send_Command with following arguments: off 80 0
neu: 2018.01.24 16:54:25 3: Siro_set: handing over to Siro_Send_Command with following arguments: off 80 0 [color=red]4[/color]

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2