Es gibt bestimmt Verbesserungspotential im Sketch, MySensors ist mein erstes Projekt mit der ArduinoIDE
, 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...)