Autor Thema: [gelöst]Probleme mit receive (alte Daten werden geladen)  (Gelesen 1819 mal)

Offline Beta-User

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 15693
Antw:[gelöst]Probleme mit receive (alte Daten werden geladen)
« Antwort #15 am: 10 Juli 2021, 15:31:49 »
Es gibt bestimmt Verbesserungspotential im Sketch, MySensors ist mein erstes Projekt mit der ArduinoIDE 8) , davor hatte ich nur mal einen kleinen Sketch mit Bascom geschrieben.
Für einen "Erstling" finde ich das ziemlich cool, und die "Kritik" ist auf eher hohem Niveau angesiedelt - ohne behaupten zu wollen, dass ich alles verstanden habe, was da vercoded ist...

Hmm, bin mir nicht sicher, was du damit meinst.
Ich setze doch einen Zähler, dieser wird, sobald die Nachricht eintrifft auf 0 gesetzt, ansonsten wird der Befehl neu gesendet.
Es geht nur um die "receive()"-Funktion, und das mit dem Zähler ist soweit klar.

Innerhalb der Funktion sind aber die Teile relativ weit hinten angesiedelt, die sich mit Ack-Nachrichten beschäftigen. Hat man keinen Zähler, ist man dann eigentlich schon fertig, hat man einen, könnte man die Ack-Behandlung innerhalb eines einzigen "if"-Zweiges (ggf. mit weiteren Unterscheidungen nach Typ etc. innerhalb dieses Zweiges) unterbringen - da wird ja jeweils nur der Zähler auf "0" (= ok) gesetzt...
Wäre m.E. übersichtlicher...

Pseudecode ist evtl. einfacher:
void receive(const MyMessage &message) {
    if (message.isAck() ) {
        if (message.type == V_STATUS && Relays[message.sensor].relayAckCountR > 0) {
           [reset des zählers]
        }
       
        else if (...percentage...) {            [bla]
        }
    }
    else if ( [Behandlung der Nachrichten vom Controller] ...

(Wie gesagt: Gejammer auf hohem Niveau...)
Server: HP-T620@Debian 10, aktuelles FHEM + ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn:MySensors, Weekday-&RandomTimer, Twilight,  AttrTemplate {u.a. mqtt2, mysensors, zwave}

Offline frober

  • Sr. Member
  • ****
  • Beiträge: 842
  • Was man nicht kann, kann man lernen...
Antw:[gelöst]Probleme mit receive (alte Daten werden geladen)
« Antwort #16 am: 10 Juli 2021, 17:23:35 »
Für einen "Erstling" finde ich das ziemlich cool, und die "Kritik" ist auf eher hohem Niveau angesiedelt - ohne behaupten zu wollen, dass ich alles verstanden habe, was da vercoded ist...
Es geht nur um die "receive()"-Funktion, und das mit dem Zähler ist soweit klar.

Innerhalb der Funktion sind aber die Teile relativ weit hinten angesiedelt, die sich mit Ack-Nachrichten beschäftigen. Hat man keinen Zähler, ist man dann eigentlich schon fertig, hat man einen, könnte man die Ack-Behandlung innerhalb eines einzigen "if"-Zweiges (ggf. mit weiteren Unterscheidungen nach Typ etc. innerhalb dieses Zweiges) unterbringen - da wird ja jeweils nur der Zähler auf "0" (= ok) gesetzt...
Wäre m.E. übersichtlicher...

Pseudecode ist evtl. einfacher:
void receive(const MyMessage &message) {
    if (message.isAck() ) {
        if (message.type == V_STATUS && Relays[message.sensor].relayAckCountR > 0) {
           [reset des zählers]
        }
       
        else if (...percentage...) {            [bla]
        }
    }
    else if ( [Behandlung der Nachrichten vom Controller] ...

(Wie gesagt: Gejammer auf hohem Niveau...)

Wow, danke für das Kompliment. :)
Bei Gelegenheit werde ich mir das nochmal ansehen.
« Letzte Änderung: 10 Juli 2021, 21:21:27 von frober »
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...