Autor Thema: [GELÖST] I_TIME und GATEWAY funktioniert nicht  (Gelesen 2059 mal)

Offline SirBen

  • Full Member
  • ***
  • Beiträge: 104
[GELÖST] I_TIME und GATEWAY funktioniert nicht
« am: 27 Februar 2020, 15:30:20 »
Moin,
ich würde gerne die aktuelle Zeit an meinem Gateway von FHEM beziehen mittels requestTime().
Das mysensors Modul von FHEM ist dazu allerdings nicht in der Lage.
Es muss in der 00_MYSENSORS.pm in Zeile 375 folgendes eingefügt werden:
$type == I_TIME and do {
        if (my $client = matchClient($hash,$msg)){ MYSENSORS::DEVICE::onInternalMessage($client,$msg) }
        last;
      };
Spricht etwas dagegen? Sonst wäre es schön, wenn die Funktion eingefügt werden könnte, um beim nächsten Update nicht wieder die 00_MYSENSORS.pm zu bearbeiten.

Vielen Dank und Gruß
Ben
« Letzte Änderung: 09 März 2020, 11:31:47 von SirBen »

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 13221
  • "Developer"?!? Meistens doch eher "User"
Antw:I_TIME und GATEWAY funktioniert nicht
« Antwort #1 am: 28 Februar 2020, 08:27:01 »
Hab's eingecheckt, auch wenn mir (noch) nicht so ganz klar ist, warum das im Fall eines GW's nicht über die "request"-Schiene abgewickelt wird...

Welche MySensors-Version hast du da auf dem GW (und auch sonst) im Einsatz?
(Falls das die allerneuste ist: Gibt es ggf. sonst noch was wichtiges, was sich geändert haben könnte?)
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Offline SirBen

  • Full Member
  • ***
  • Beiträge: 104
Antw:I_TIME und GATEWAY funktioniert nicht
« Antwort #2 am: 28 Februar 2020, 09:04:12 »
Vielen Dank!
Soweit ich den Code verstanden habe, wird in 00_MYSENSORS bei onInternalMsg() zuerst geprüft, ob die message vom Gateway kommt. Wenn ja, dann wird geprüft, ob es sich um
$type: I_INCLUSION_MODE, I_GATEWAY_READY, I_HEARTBEAT_RESPONSE, I_VERSION, I_LOG_MESSAGE oder I_ID_REQUEST
handelt.
Dort ist halt kein I_TIME hinterlegt und die Nachricht wird ignoriert.
Wenn die message nicht von einem gateway kommt, sondern von einer bekannten Node, wird über
elsif (my $client = matchClient($hash,$msg)) {
    MYSENSORS::DEVICE::onInternalMessage($client,$msg);
das ganze an 10_MYSENSORS übergeben und verarbeitet.

Über onRequestMsg() wird keine Internal message verarbeitet. Dafür gibt es ja onInternalMsg().

Bei mir ist die überall aktuellste MYSENSORS Version (2.3.2) im Einsatz.
In dieser Version wird ACK durch Echo ersetzt. Ich weiß aber nicht in wie weit sich das auf FHEM auswirkt...

Gruß Ben

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 13221
  • "Developer"?!? Meistens doch eher "User"
Antw:I_TIME und GATEWAY funktioniert nicht
« Antwort #3 am: 28 Februar 2020, 09:19:41 »
Thx, habe dann auch nochmal die Struktur der ganzen Funktion angesehen, dann wird das klarer. Muß bei Gelegenheit mal checken, ob es nicht sinnvoll wäre, den Code an der Stelle etwas umzustellen.
In dieser Version wird ACK durch Echo ersetzt. Ich weiß aber nicht in wie weit sich das auf FHEM auswirkt...
Ich habe eine 2.3.2-final-Node, die aber noch "isAck()" enthält. Das war mir entgegangen gewesen, dass es da Neuerungen gab, und promt macht die Probleme, wenn man mit ACK-request arbeitet... Vermutlich ist das kein Problem mehr, wenn man den Code auf der Node anpaßt, aber soweit war ich noch nicht wieder gekommen.
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | BT@OpenMQTTGateway
svn:MySensors, WeekdayTimer, RandomTimer, Twilight,  AttrTemplate => {mqtt2, mysensors, zwave}

Offline CQuadrat

  • Sr. Member
  • ****
  • Beiträge: 668
Antw:[GELÖST] I_TIME und GATEWAY funktioniert nicht
« Antwort #4 am: 17 Juni 2020, 17:26:25 »
Problem gelöst. Ich ziehe zurück.


Hallo Zusammen,

irgendwie scheint mir die Zeitbehandlung in MySensors nicht ganz rund.

Ich hole mir im Node-Device im setup() mit requestTime() vom Gateway die aktuelle Zeit. Das sieht dann nach localtime aus (also bei mir UTC+2).

Führe ich dann im Node-Device mit
set <Node-Device> time aus, ist die Zeit dann auf einmal in UTC.

Oder habe ich einen Denkfehler?



Viele Grüße

Christoph
« Letzte Änderung: 17 Juni 2020, 17:30:03 von CQuadrat »
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue