Beide, PZEM-module is niet aangemod en dat andere kanaal heb ik nog niet getest. Ben allang blij dat het nu via de serial server werkt, schoonheidsfoutjes (of hoe je het wilt noemen

) wegwerken komt nog.
De stekkers die ik aan het kabeltje van de PZEM had gekrimpt hebben een wat dunne pin, die schuift zo uit het breadboard.
De Python-code vereist overigens ook nog enige aandacht. Er is iets heel vaags aan de hand. Als ik het commando voor meetgegevens ("\x01\x04\x00\x00\x00\x0A\x70\x0D") handmatig intik en verstuur, dan werkt het. Laat ik het commando opgebouwd worden door code, waarbij het adres + functiecode + registeradres + aantalregisters achter elkaar worden gezet (in hex) plus het bepalen van de CRC, dan krijg ik exact hetzelfde maar de PZEM is het er niet mee eens, evenals een if om zowel het door code opgebouwde als handmatig ingevoerde commando met elkaar te vergelijken.
Het printen naar console verschilt ook, terwijl ze hetzelfde zouden moeten zijn. De door code opgebouwde (en door PZEM genegeerde) wordt op de console geprint als
Python:
1
| \x01\x04\x00\x00\x00\x0A\x70\x0D |
wat dus klopt. De handmatig ingevoerde (die wél werkt)
Python:
1
2
| command2 = "\x01\x04\x00\x00\x00\x0A\x70\x0D"
print(command2) |
ziet er op de console zo uit:
Beide zijn (aldus Python) strings, de grootte verschilt om onbekende reden. De door code opgebouwde is 4x zo groot

(aldus len() ). Voor zover ik kan zien moeten beide hetzelfde zijn, maar blijkbaar niet

Maar dat wordt een beetje offtopic voor dit topic denk ik
After the first glass you see things as you wish they were. After the second you see things as they are not. Finally you see things as they really are, and that is the most horrible thing in the world...
Oscar Wilde