Ik probeer wat meer info te krijgen uit m'n CV-ketel (een remeha avanta 35c) om een beter idee te krijgen van z'n energieverbruik en hoe ik 'm eventueel beter kan inregelen. Opentherm zou een betere optie zijn (omdat je dan ook kunt regelen), maar in eerste instantie is lezen voldoende.
Uit dit topic begrijp ik dat je via Recom (software van remeha) je ketel kunt uitlezen. Helaas is dat een windows-only oplossing, en de laatste windowsmachine is hier 2 jaar geleden vervangen door een linuxbak.
Gelukkig laat het ding zich ook interfacen met een raspberry pi; het github-archief van rjblake (https://github.com/rjblake/remeha ) geeft voldoende info om iets in elkaar te kunnen flanzen. Wel blijkt dan dat je voor de avanta andere strings moet sturen, zoals in https://github.com/rjblake/remeha/issues/8 is aangegeven. Als ik die hex-strings gebruik krijg ik netjes een antwoord terug.
Alleen: de AvantaV1P3 die daar genomend wordt lijkt uitgebreidere info terug te sturen dan de Avanta 35c (voor het sample-veld 128 bytes tov 24, en voor counters en parameters geldt iets soortgelijks). Waarschijnlijk is de volgorde van de velden dan ook niet hetzelfde.
Goed, Recom geinstalleerd onder wine, maar helaas zie ik in de config-directory zo snel geen xml-file staan die voor de avanta 35c. Recom aansluiten op de CV werkt ook niet zo lekker, want zoals gezegd: ik heb hier geen windowsmachine, en daarnaast heeft wine moeite om een ftdi FT232 te herkennen als seriele poort.
OTOH, als je met OpenTherm netzoveel kunt als met het recom-interface, dan is dat natuurlijk wel zo prettig. Dus iemand suggesties danwel hints hoe-ie z'n cv-ketel heeft geinterfaced?
Stukje hele ruwe code hier ingevoegd omdat het me opviel dat de meeste linkjes verwijzen naar websites die ondertussen al lang en breed niet meer bestaan en ik dat de volgende persoon wil besparen:
import serial
ser = serial.Serial('/dev/ttyUSB0',
baudrate = 9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1)
remeha_sample = "0252050602005303"
remeha_counter1 = "0252050610014003"
remeha_counter2 = "0252050610024303"
remeha_counter3 = ""
remeha_counter4 = ""
remeha_id1 = "02FE000508010BD49C03"
remeha_id2 = "02FE010508010BE95C03"
remeha_id3 = "02FE030508010B909C03"
remeha_param1 = "0252050610034203"
remeha_param2 = "0252050610044503"
remeha_param3 = "0252050610054403"
remeha_param4 = "0252050610064703"
remeha_param5 = ""
remeha_param6 = ""
remeha_param7 = ""
remeha_param8 = ""
sample=bytes.fromhex(remeha_sample)
counter1=bytes.fromhex(remeha_counter1)
counter2=bytes.fromhex(remeha_counter2)
counter3=bytes.fromhex(remeha_counter3)
param1=bytes.fromhex(remeha_param1)
param2=bytes.fromhex(remeha_param2)
param3=bytes.fromhex(remeha_param3)
param4=bytes.fromhex(remeha_param4)
line=[]
f1=open('s.txt','w')
f2=open('p1.txt','w')
f3=open('p2.txt','w')
f4=open('p3.txt','w')
f5=open('p4.txt','w')
f6=open('c1.txt','w')
f7=open('c2.txt','w')
f8=open('c3.txt','w')
#b=ser.write(counter1)
#while True:
# c=ser.read()
# line.append(c)
# print (len(line))
j=0
while True:
b=ser.write(sample)
s= ser.read(24)
b=ser.write(param1)
p1= ser.read(24)
b=ser.write(param2)
p2= ser.read(24)
b=ser.write(param3)
p3= ser.read(24)
b=ser.write(param4)
p4= ser.read(24)
b=ser.write(counter1)
c1= ser.read(24)
b=ser.write(counter2)
c2= ser.read(24)
b=ser.write(counter3)
c3= ser.read(24)
f8.write(str(s)+'\n')
f1.write(str(p1)+'\n')
f2.write(str(p2)+'\n')
f3.write(str(p3)+'\n')
f4.write(str(p4)+'\n')
f5.write(str(c1)+'\n')
f6.write(str(c2)+'\n')
f7.write(str(c3)+'\n')
print (j)
j+=1
[Bericht gewijzigd door alex278 op (37%)]
Ik heb hier https://www.circuitsonline.net/forum/view/message/2259568#2259568 een antwoord geplaatst. Hopelijk blaast dat deze discussie nieuw leven in.