Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie

Vraag


  • Pregabaline
  • Registratie: april 2017
  • Laatst online: 16-06-2017
Mijn vraag

Beste mensen,

ik probeer al een tijdje de Kamstrup Multical 402 uit te lezen via de IR poort met de IR-leeskop USB versie (http://wiki.volkszaehler....reib-lesekopf-usb-ausgang) die hier al vaker op het forum genoemd is op mijn RPI3.

Ik krijg het alleen maar niet voor elkaar om de Kamstrup meter te laten communiceren. Volgens de technische documenten gebruikt hij alleen het Kamstrup Meter Protocol voor connectie maar geen van de bekende scripts die daarmee zouden kunnen werken reageren erop (te vinden bij http://www.smartmeterdashboard.nl/downloads).

Onderhand heb ik al van alles geprobeerd, andere baudrates, andere IR commando's om de meter wakker te maken. Ik krijg maar geen liefde terug van de Kamstrup Meter. Enkel alleen zie ik mijn verstuurde boodschap naar de seriele poort terugkomen als command, maar verder niet.

Heeft iemand het geheel werkend gekregen op een Kamstrup Multical 402, 602 of 802 met een IR-kop die kan helpen?

Alle reacties


  • AUijtdehaag
  • Registratie: oktober 2006
  • Niet online

PV Output - Panasonic Hit Kuro Zuid / Solar Frontier Noord- 5 kW Mitsubsidie WP - Aton powerrr to heat


  • Pregabaline
  • Registratie: april 2017
  • Laatst online: 16-06-2017
Dank je voor je reactie. Ik heb Nuon al eerder gevraagd of ik de M-Bus module mag/kon installeren of bestellen, maar dat was niet toegestaan. Ik kan het ook niet zelf doen zonder de verzegeling te verbreken. Ik moet het dus helaas met de IR-connectie doen. Ze zijn sowieso niet happig op mensen die überhaupt hun meter willen uitlezen.

  • DJP!
  • Registratie: mei 2012
  • Nu online
Het zou met de scripts van http://www.smartmeterdashboard.nl/ wel moeten werken. Werkt het van after een Windows computer wel? Dan weer je in iedergeval dat het niet aan de kabel ligt...

  • Pregabaline
  • Registratie: april 2017
  • Laatst online: 16-06-2017
Die scripts heb ik gebruikt, alleen nog niet vanaf een Windows computer. Ik heb wel de kabel gecontroleerd en krijg een signaal binnen als ik een willekeurig andere afstandsbediening erop richt en ik zie licht op mijn telefooncamera als ik er berichten naartoe stuur. Ik heb de verschillende script van Smartmeterdashboard allemaal geprobeerd, maar ik krijg maar geen reactie van de meter. Van verschillende initialize-signalen krijg ik alleen maar het oorspronkelijk commando terug. Volgens de handleiding staat de ir-poort van de meter uit, maar gaat meteen voor 30 minuten als je aan 1 van de knoppen zit. Maar wat ik ook doe en hoe de ir-kop ook richt, lijkt de meter niet te willen reageren.

  • Speedy-Andre
  • Registratie: maart 2002
  • Laatst online: 19:48

Speedy-Andre

Sony ZL-XA, Nokia 7 plus

In de handleiding staat dat IR wordt geactiveerd zodra je een IR commando stuurt, het is mogelijk dat de IR led van de leeskop net een andere frequentie gebruikt dan de Multical kan zien.
Andersom kan ook, dat de leeskop de IR led van de Multical niet ziet.
Kijk eens of je met een remote naar de Multical kan seinen en of je dan met een camera een respons ziet.
Volgens de handleiding is een seriele verbinding traag, 1200 of 2400bd, 8 databits, geen parity en 2 stopbits.
Het zou kunnen dat dit ook voor IR geldt.

PVoutput Stookt met 2x Tosh Daiseikai 8 3,5kW, SWW Atlantic Explorer V3 200l. Gasloos aug 2016 Sinds 6-11-2018 5590Wp WU IALMER88


  • Pregabaline
  • Registratie: april 2017
  • Laatst online: 16-06-2017
Eureka! Ik heb zitten spelen met een aantal van de settings en van Joost van Smartmeterdashboard nog een ander KMP-script gekregen van een 382 meter. Deze werkte nadat ook de IR-kop weer beetje verplaatst was. Geen idee wat het nu exact is geweest, maar zal een combinatie van zaken zijn geweest. Dank allemaal!

Acties:
  • 0Henk 'm!

  • Speedy-Andre
  • Registratie: maart 2002
  • Laatst online: 19:48

Speedy-Andre

Sony ZL-XA, Nokia 7 plus

Wat zijn nu die instellingen (zelfde als serieel)?
Er zal wellicht nog wel iemand zijn die dit wil proberen :)

PVoutput Stookt met 2x Tosh Daiseikai 8 3,5kW, SWW Atlantic Explorer V3 200l. Gasloos aug 2016 Sinds 6-11-2018 5590Wp WU IALMER88


Acties:
  • 0Henk 'm!

  • Pregabaline
  • Registratie: april 2017
  • Laatst online: 16-06-2017
Het is gelukt met 1200 baud, 8databit, geen parity en 2 stopbits gewerkt. Belangrijk is wel dat je dus elke keer binnen de 30 minuten het datalog-scriptje moet runnen want anders staat de meter uit en dan krijg je geen bruikbare respons.

Acties:
  • 0Henk 'm!

  • Speedy-Andre
  • Registratie: maart 2002
  • Laatst online: 19:48

Speedy-Andre

Sony ZL-XA, Nokia 7 plus

Ik neem aan dat je niet continu hoeft te monitoren, want dan zijn de batterijen ook sneller leeg.
Voor mij zou het al prima zijn als ik data krijg zodra ik het script start :)

PVoutput Stookt met 2x Tosh Daiseikai 8 3,5kW, SWW Atlantic Explorer V3 200l. Gasloos aug 2016 Sinds 6-11-2018 5590Wp WU IALMER88


  • Cletuss
  • Registratie: februari 2013
  • Laatst online: 19-08-2019
Fijn dat het werkt! Ik zit er zelf ook over na te denken om dit te gaan doen. Kun je misschien een foto maken van je plaatsing en evt het scriptje?

Alvast bedankt!

Acties:
  • +1Henk 'm!

  • Cletuss
  • Registratie: februari 2013
  • Laatst online: 19-08-2019
Na een hoop uitzoek werk heb ik het samen met iemand anders voor elkaar gekregen. Ik denk ik post even een kleine info hier met een link naar het Domoticz forum waar ik het werkende script heb neergezet. Dit is dus ter info :)

http://www.domoticz.com/forum/viewtopic.php?f=65&t=18116&p=142535#p142535

  • mcel1
  • Registratie: oktober 2017
  • Laatst online: 15-02 21:34
Dankzij deze info heb ik het ook werkend gekregen voor de 402! Dank daarvoor.

Ik vroeg me af of een van jullie een oplossing gevonden heeft voor de 30 minuten timeout van de meter?

Uiteraard is de knop handmatig indrukken een optie of zoals eerder beschreven:
Pregabaline schreef op vrijdag 26 mei 2017 @ 11:54:
... Belangrijk is wel dat je dus elke keer binnen de 30 minuten het datalog-scriptje moet runnen want anders staat de meter uit en dan krijg je geen bruikbare respons.
In de handleiding van de 402 staat echter het volgende:

In order to limit the current consumption of the circuit around the IR diode, the circuit is not permanently switched on. It is activated by either keystroke or communication via the optical eye.
The circuit remains switched on for 30 min. after end of communication or after latest keystroke.


Vooral die tweede zin is interessant. Heeft iemand dit werkend kunnen krijgen via communicatie alleen?

  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:40
Dank @Cletuss voor het delen van jouw scripts. Daarmee heb ik het nu ook werkend gekregen!

Nog een kleine aanvulling: Ik liep er alleen tegenaan dat de virtuele devices van het type counter / teller en custom alleen integers als input nemen. Daarmee kon ik geen waarden met decimalen loggen. Verder waren die virtuele device types wel de beste match voor verbruik per dag te loggen (teller) en stond die toe de juiste labels te gebruiken. Door bij Heat Energy en Power nu de gelezen waarde met 1000 te vermenigvuldigen en te loggen met megajoule en Watt heb ik toch de gewenste details en de juiste labels, zonder met decimalen te hoeven werken.

  • I_stealth_I
  • Registratie: januari 2001
  • Laatst online: 14-06 13:36

I_stealth_I

Tweak It OR leave it!

Maar nu nog een oplossing voor de verminderde batterij duur. Mijn energieleverancier heeft er een D-cell batterij in zitten, die zou geen 10 jaar meer meegaan, maar een aantal maanden als ik binnen iedere 30 minuten de batterij uitlees.

ik heb het probleem voorgelegd aan de energieleverancier. Ze geven aan dat Kamstrup bezig is met een variant van Kamstrup READy systeem voor particuliere uitlezing. Tot dat moment adviseren ze om de pulse uitgang te gebruiken op de kamstrup 402 icm Youless pulse teller.

Volgens mij zitten die contactpunten onder een kapje waar een verzegeling opzit. 8)7 |:(
Ik heb uw vragen intern voorgelegd. De oplossing voor het 'slim' collecteren van de data is momenteel het Kamstrup READy systeem. Dit is kostentechnisch echter nog niet rendabel op individueel niveau. Kamstrup is wel bezig met de verder ontwikkeling om dit op individueel niveau mogelijk te maken.
U heeft een meter met het type Kamstrup Multical 402 met serienummer XXXX en bouwjaar 2012. In de bijlage vindt u de exacte specificatie en een handleiding voor de meter. Op de rf-module van deze meter zit een puls uitgang. Deze zou u kunnen aansluiten aan uw Youless-interface.

[Voor 33% gewijzigd door I_stealth_I op 12-01-2018 19:53]

/dev/null


  • BlakHawk
  • Registratie: februari 2008
  • Laatst online: 09-01 11:57
mcel1 schreef op vrijdag 27 oktober 2017 @ 15:49:
Dankzij deze info heb ik het ook werkend gekregen voor de 402! Dank daarvoor.

Ik vroeg me af of een van jullie een oplossing gevonden heeft voor de 30 minuten timeout van de meter?

Uiteraard is de knop handmatig indrukken een optie of zoals eerder beschreven:

[...]


In de handleiding van de 402 staat echter het volgende:

In order to limit the current consumption of the circuit around the IR diode, the circuit is not permanently switched on. It is activated by either keystroke or communication via the optical eye.
The circuit remains switched on for 30 min. after end of communication or after latest keystroke.


Vooral die tweede zin is interessant. Heeft iemand dit werkend kunnen krijgen via communicatie alleen?
tsjoender schreef op woensdag 27 december 2017 @ 10:24:
Dank @Cletuss voor het delen van jouw scripts. Daarmee heb ik het nu ook werkend gekregen!

Nog een kleine aanvulling: Ik liep er alleen tegenaan dat de virtuele devices van het type counter / teller en custom alleen integers als input nemen. Daarmee kon ik geen waarden met decimalen loggen. Verder waren die virtuele device types wel de beste match voor verbruik per dag te loggen (teller) en stond die toe de juiste labels te gebruiken. Door bij Heat Energy en Power nu de gelezen waarde met 1000 te vermenigvuldigen en te loggen met megajoule en Watt heb ik toch de gewenste details en de juiste labels, zonder met decimalen te hoeven werken.
I_stealth_I schreef op vrijdag 12 januari 2018 @ 19:51:
Maar nu nog een oplossing voor de verminderde batterij duur. Mijn energieleverancier heeft er een D-cell batterij in zitten, die zou geen 10 jaar meer meegaan, maar een aantal maanden als ik binnen iedere 30 minuten de batterij uitlees.

ik heb het probleem voorgelegd aan de energieleverancier. Ze geven aan dat Kamstrup bezig is met een variant van Kamstrup READy systeem voor particuliere uitlezing. Tot dat moment adviseren ze om de pulse uitgang te gebruiken op de kamstrup 402 icm Youless pulse teller.

Volgens mij zitten die contactpunten onder een kapje waar een verzegeling opzit. 8)7 |:(


[...]
Hebben jullie dit nog steeds draaien?
Wij hebben een Kamstrup 403 van Eneco "gekregen". Uiteraard verzegeld en wel.

Kan ik iets met het plaatje boven het display?

Youtube: DashcamNL


  • I_stealth_I
  • Registratie: januari 2001
  • Laatst online: 14-06 13:36

I_stealth_I

Tweak It OR leave it!

dfrenner schreef op maandag 10 december 2018 @ 16:56:


Hebben jullie dit nog steeds draaien?
Wij hebben een Kamstrup 403 van Eneco "gekregen". Uiteraard verzegeld en wel.
Nee, heb het toen opgegeven, maar ben nog steeds belangstellend voor een goede oplossing.

/dev/null


  • BlakHawk
  • Registratie: februari 2008
  • Laatst online: 09-01 11:57
Cletuss schreef op maandag 24 juli 2017 @ 15:16:
Na een hoop uitzoek werk heb ik het samen met iemand anders voor elkaar gekregen. Ik denk ik post even een kleine info hier met een link naar het Domoticz forum waar ik het werkende script heb neergezet. Dit is dus ter info :)

http://www.domoticz.com/forum/viewtopic.php?f=65&t=18116&p=142535#p142535
Pregabaline schreef op donderdag 25 mei 2017 @ 23:45:
Eureka! Ik heb zitten spelen met een aantal van de settings en van Joost van Smartmeterdashboard nog een ander KMP-script gekregen van een 382 meter. Deze werkte nadat ook de IR-kop weer beetje verplaatst was. Geen idee wat het nu exact is geweest, maar zal een combinatie van zaken zijn geweest. Dank allemaal!
Ik ga weer een poging wagen.
Ik had deze gevonden voor een Kamstrup 601 model:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
#!/usr/bin/python
#
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <phk@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
# Modified for Domotics and single request.
#
# Usage: __file__ <ComPort> <KMP_Command_Decimal> <Domoticz_IDX>
# kamstrup.py /dev/ttyUSB-IR 60 65



from __future__ import print_function

# You need pySerial 
import serial
import math
import sys
import json
import urllib2


kamstrup_601_var = {
    0x003C: "Verwarming verbruik",
    0x0054: "Warm waterverbruik",
}

#######################################################################
# Units, provided by Erik Jensen

units = {
    0: '', 1: 'Wh', 2: 'kWh', 3: 'MWh', 4: 'GWh', 5: 'j', 6: 'kj', 7: 'Mj',
    8: 'Gj', 9: 'Cal', 10: 'kCal', 11: 'Mcal', 12: 'Gcal', 13: 'varh',
    14: 'kvarh', 15: 'Mvarh', 16: 'Gvarh', 17: 'VAh', 18: 'kVAh',
    19: 'MVAh', 20: 'GVAh', 21: 'kW', 22: 'kW', 23: 'MW', 24: 'GW',
    25: 'kvar', 26: 'kvar', 27: 'Mvar', 28: 'Gvar', 29: 'VA', 30: 'kVA',
    31: 'MVA', 32: 'GVA', 33: 'V', 34: 'A', 35: 'kV',36: 'kA', 37: 'C',
    38: 'K', 39: 'l', 40: 'm3', 41: 'l/h', 42: 'm3/h', 43: 'm3xC',
    44: 'ton', 45: 'ton/h', 46: 'h', 47: 'hh:mm:ss', 48: 'yy:mm:dd',
    49: 'yyyy:mm:dd', 50: 'mm:dd', 51: '', 52: 'bar', 53: 'RTC',
    54: 'ASCII', 55: 'm3 x 10', 56: 'ton x 10', 57: 'GJ x 10',
    58: 'minutes', 59: 'Bitfield', 60: 's', 61: 'ms', 62: 'days',
    63: 'RTC-Q', 64: 'Datetime'
}

#######################################################################
# Kamstrup uses the "true" CCITT CRC-16
#

def crc_1021(message):
        poly = 0x1021
        reg = 0x0000
        for byte in message:
                mask = 0x80
                while(mask > 0):
                        reg<<=1
                        if byte & mask:
                                reg |= 1
                        mask>>=1
                        if reg & 0x10000:
                                reg &= 0xffff
                                reg ^= poly
        return reg

#######################################################################
# Byte values which must be escaped before transmission
#

escapes = {
    0x06: True,
    0x0d: True,
    0x1b: True,
    0x40: True,
    0x80: True,
}

#######################################################################
# And here we go....
#
class kamstrup(object):

    def __init__(self, serial_port):
        self.debug_fd = open("/tmp/_kamstrup", "a")
        self.debug_fd.write("\n\nStart\n")
        self.debug_id = None

        self.ser = serial.Serial(
            port = serial_port,
            baudrate = 1200,
            timeout = 2.0)

    def debug(self, dir, b):
        for i in b:
            if dir != self.debug_id:
                if self.debug_id != None:
                    self.debug_fd.write("\n")
                self.debug_fd.write(dir + "\t")
                self.debug_id = dir
            self.debug_fd.write(" %02x " % i)
        self.debug_fd.flush()

    def debug_msg(self, msg):
        if self.debug_id != None:
            self.debug_fd.write("\n")
        self.debug_id = "Msg"
        self.debug_fd.write("Msg\t" + msg)
        self.debug_fd.flush()

    def wr(self, b):
        b = bytearray(b)
        self.debug("Wr", b);
        self.ser.write(b)

    def rd(self):
        a = self.ser.read(1)
        if len(a) == 0:
            self.debug_msg("Rx Timeout")
            return None
        b = bytearray(a)[0]
        self.debug("Rd", bytearray((b,)));
        return b

    def send(self, pfx, msg):
        b = bytearray(msg)

        b.append(0)
        b.append(0)
        c = crc_1021(b)
        b[-2] = c >> 8
        b[-1] = c & 0xff

        c = bytearray()
        c.append(pfx)
        for i in b:
            if i in escapes:
                c.append(0x1b)
                c.append(i ^ 0xff)
            else:
                c.append(i)
        c.append(0x0d)
        self.wr(c)

    def recv(self):
        b = bytearray()
        while True:
            d = self.rd()
            if d == None:
                return None
            if d == 0x40:
                b = bytearray()
            b.append(d)
            if d == 0x0d:
                break
        c = bytearray()
        i = 1;
        while i < len(b) - 1:
            if b[i] == 0x1b:
                v = b[i + 1] ^ 0xff
                if v not in escapes:
                    self.debug_msg(
                        "Missing Escape %02x" % v)
                c.append(v)
                i += 2
            else:
                c.append(b[i])
                i += 1
        if crc_1021(c):
            self.debug_msg("CRC error")
        return c[:-2]

    def readvar(self, nbr):
        # I wouldn't be surprised if you can ask for more than
        # one variable at the time, given that the length is
        # encoded in the response.  Havn't tried.

        self.send(0x80, (0x3f, 0x10, 0x01, nbr >> 8, nbr & 0xff))

        b = self.recv()
        if b == None:
            return (None, None)

        if b[0] != 0x3f or b[1] != 0x10:
            return (None, None)

        if b[2] != nbr >> 8 or b[3] != nbr & 0xff:
            return (None, None)

        if b[4] in units:
            u = units[b[4]]
        else:
            u = None

        # Decode the mantissa
        x = 0
        for i in range(0,b[5]):
            x <<= 8
            x |= b[i + 7]

        # Decode the exponent
        i = b[6] & 0x3f
        if b[6] & 0x40:
            i = -i
        i = math.pow(10,i)
        if b[6] & 0x80:
            i = -i
        x *= i

        if False:
            # Debug print
            s = ""
            for i in b[:4]:
                s += " %02x" % i
            s += " |"
            for i in b[4:7]:
                s += " %02x" % i
            s += " |"
            for i in b[7:]:
                s += " %02x" % i

            print(s, "=", x, units[b[4]])

        return (x, u)
            

if __name__ == "__main__":

    import time

    comport = sys.argv[1]
    command = int( sys.argv[2], 0)
    index = int( sys.argv[3], 0)

    foo = kamstrup( comport )

    value,unit = foo.readvar( command )

    # We're sending an integer value to Domoticz, so with two digits, muliply by 100
    # Use Domiticz setting to devide by 100 again.
    value = int(value * 1000)

    requestPost = urllib2.Request( "http://192.168.178.100:8080/json.htm?type=command&param=udevice&idx=" + str(index) + "&svalue=" + str(value) )
    resultPost = json.load(urllib2.urlopen(requestPost))


Hierbij moet ik dus in crontab zoiets runnen:
python /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 60 <IDX uit Domoticz>

Maar nu lees ik bij dit topic het scrip voor de 402 (ik heb dacht ik de 403)...
Dan is het dus dit script:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
#!/usr/bin/python
#
# ----------------------------------------------------------------------------
# "THE BEER-WARE LICENSE" (Revision 42):
# <phk@FreeBSD.ORG> wrote this file.  As long as you retain this notice you
# can do whatever you want with this stuff. If we meet some day, and you think
# this stuff is worth it, you can buy me a beer in return.   Poul-Henning Kamp
# ----------------------------------------------------------------------------
#
# Modified for Domotics and single request.
#
# Modified by Frank Reijn and Paul Bonnemaijers for Kamstrup Multical 402
#
# Usage: __file__ <ComPort> <KMP_Command_Decimal> <Domoticz_IDX>
#

from __future__ import print_function

# You need pySerial 
import serial
import math
import sys
import datetime
import json
import urllib
import urllib.request

# Variables

# domoip = "192.168.2.253"
# domoport = "8080"

kamstrup_402_var = {                # Decimal Number in Command
 0x003C: "Heat Energy (E1)",        #60
 0x0050: "Power",                   #80
 0x0056: "Temp1",                   #86
 0x0057: "Temp2",                   #87
 0x0059: "Tempdiff",                #89
 0x004A: "Flow",                    #74
 0x0044: "Volume",                  #68
 0x008D: "MinFlow_M",               #141
 0x008B: "MaxFlow_M",               #139
 0x008C: "MinFlowDate_M",           #140
 0x008A: "MaxFlowDate_M",           #138
 0x0091: "MinPower_M",              #145
 0x008F: "MaxPower_M",              #143
 0x0095: "AvgTemp1_M",              #149
 0x0096: "AvgTemp2_M",              #150
 0x0090: "MinPowerDate_M",          #144
 0x008E: "MaxPowerDate_M",          #142
 0x007E: "MinFlow_Y",               #126
 0x007C: "MaxFlow_Y",               #124
 0x007D: "MinFlowDate_Y",           #125
 0x007B: "MaxFlowDate_Y",           #123
 0x0082: "MinPower_Y",              #130
 0x0080: "MaxPower_Y",              #128
 0x0092: "AvgTemp1_Y",              #146
 0x0093: "AvgTemp2_Y",              #147
 0x0081: "MinPowerDate_Y",          #129
 0x007F: "MaxPowerDate_Y",          #127
 0x0061: "Temp1xm3",                #97
 0x006E: "Temp2xm3",                #110
 0x0071: "Infoevent",               #113
 0x03EC: "HourCounter",             #1004
}

#######################################################################
# Units, provided by Erik Jensen

units = {
    0: '', 1: 'Wh', 2: 'kWh', 3: 'MWh', 4: 'GWh', 5: 'j', 6: 'kj', 7: 'Mj',
    8: 'Gj', 9: 'Cal', 10: 'kCal', 11: 'Mcal', 12: 'Gcal', 13: 'varh',
    14: 'kvarh', 15: 'Mvarh', 16: 'Gvarh', 17: 'VAh', 18: 'kVAh',
    19: 'MVAh', 20: 'GVAh', 21: 'kW', 22: 'kW', 23: 'MW', 24: 'GW',
    25: 'kvar', 26: 'kvar', 27: 'Mvar', 28: 'Gvar', 29: 'VA', 30: 'kVA',
    31: 'MVA', 32: 'GVA', 33: 'V', 34: 'A', 35: 'kV',36: 'kA', 37: 'C',
    38: 'K', 39: 'l', 40: 'm3', 41: 'l/h', 42: 'm3/h', 43: 'm3xC',
    44: 'ton', 45: 'ton/h', 46: 'h', 47: 'hh:mm:ss', 48: 'yy:mm:dd',
    49: 'yyyy:mm:dd', 50: 'mm:dd', 51: '', 52: 'bar', 53: 'RTC',
    54: 'ASCII', 55: 'm3 x 10', 56: 'ton x 10', 57: 'GJ x 10',
    58: 'minutes', 59: 'Bitfield', 60: 's', 61: 'ms', 62: 'days',
    63: 'RTC-Q', 64: 'Datetime'
}

#######################################################################
# Kamstrup uses the "true" CCITT CRC-16
#

def crc_1021(message):
        poly = 0x1021
        reg = 0x0000
        for byte in message:
                mask = 0x80
                while(mask > 0):
                        reg<<=1
                        if byte & mask:
                                reg |= 1
                        mask>>=1
                        if reg & 0x10000:
                                reg &= 0xffff
                                reg ^= poly
        return reg

#######################################################################
# Byte values which must be escaped before transmission
#

escapes = {
    0x06: True,
    0x0d: True,
    0x1b: True,
    0x40: True,
    0x80: True,
}

#######################################################################
# And here we go....
#

class kamstrup(object):

    def __init__(self, serial_port):
        self.debug_fd = open("/tmp/_kamstrup", "a")
        self.debug_fd.write("\n\nStart\n")
        self.debug_id = None

        self.ser = serial.Serial(
            port = serial_port,
            baudrate = 1200,
            timeout = 2.0)

    def debug(self, dir, b):
        for i in b:
            if dir != self.debug_id:
                if self.debug_id != None:
                    self.debug_fd.write("\n")
                self.debug_fd.write(dir + "\t")
                self.debug_id = dir
            self.debug_fd.write(" %02x " % i)
        self.debug_fd.flush()

    def debug_msg(self, msg):
        if self.debug_id != None:
            self.debug_fd.write("\n")
        self.debug_id = "Msg"
        self.debug_fd.write("Msg\t" + msg)
        self.debug_fd.flush()

    def wr(self, b):
        b = bytearray(b)
        self.debug("Wr", b);
        self.ser.write(b)

    def rd(self):
        a = self.ser.read(1)
        if len(a) == 0:
            self.debug_msg("Rx Timeout")
            return None
        b = bytearray(a)[0]
        self.debug("Rd", bytearray((b,)));
        return b

    def send(self, pfx, msg):
        b = bytearray(msg)

        b.append(0)
        b.append(0)
        c = crc_1021(b)
        b[-2] = c >> 8
        b[-1] = c & 0xff

        c = bytearray()
        c.append(pfx)
        for i in b:
            if i in escapes:
                c.append(0x1b)
                c.append(i ^ 0xff)
            else:
                c.append(i)
        c.append(0x0d)
        self.wr(c)

    def recv(self):
        b = bytearray()
        while True:
            d = self.rd()
            if d == None:
                return None
            if d == 0x40:
                b = bytearray()
            b.append(d)
            if d == 0x0d:
                break
        c = bytearray()
        i = 1;
        while i < len(b) - 1:
            if b[i] == 0x1b:
                v = b[i + 1] ^ 0xff
                if v not in escapes:
                    self.debug_msg(
                        "Missing Escape %02x" % v)
                c.append(v)
                i += 2
            else:
                c.append(b[i])
                i += 1
        if crc_1021(c):
            self.debug_msg("CRC error")
        return c[:-2]

    def readvar(self, nbr):
        # I wouldn't be surprised if you can ask for more than
        # one variable at the time, given that the length is
        # encoded in the response.  Havn't tried.

        self.send(0x80, (0x3f, 0x10, 0x01, nbr >> 8, nbr & 0xff))

        b = self.recv()
        if b == None:
            return (None, None)

        if b[0] != 0x3f or b[1] != 0x10:
            return (None, None)

        if b[2] != nbr >> 8 or b[3] != nbr & 0xff:
            return (None, None)

        if b[4] in units:
            u = units[b[4]]
        else:
            u = None

        # Decode the mantissa
        x = 0
        for i in range(0,b[5]):
            x <<= 8
            x |= b[i + 7]

        # Decode the exponent
        i = b[6] & 0x3f
        if b[6] & 0x40:
            i = -i
        i = math.pow(10,i)
        if b[6] & 0x80:
            i = -i
        x *= i

        if False:
            # Debug print
            s = ""
            for i in b[:4]:
                s += " %02x" % i
            s += " |"
            for i in b[4:7]:
                s += " %02x" % i
            s += " |"
            for i in b[7:]:
                s += " %02x" % i

            print(s, "=", x, units[b[4]])

        return (x, u)
            

if __name__ == "__main__":

    import time

    comport = sys.argv[1]
    command = int( sys.argv[2], 0)
    index = int( sys.argv[3], 0)

    foo = kamstrup( comport )
    heat_timestamp=datetime.datetime.strftime(datetime.datetime.today(), "%Y-%m-%d %H:%M:%S" )
    
    value,unit = foo.readvar( command )

    requestPost = urllib.request.urlopen( "http://192.168.2.253:8080/json.htm?type=command&param=udevice&idx=" + str(index) + "&svalue=" + str(value) )


Vervolgens kun je op dezelfde wijze zaken uitlezen toch:

# Heat Energy (verbruik) [60] [148]
python3 /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 60 148

# Volume (m3) [68] [149]
python3 /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 68 149

# Current Temp1 (forward) [86] [152]
python3 /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 86 152

# Current Temp2 (return) [87] [153]
python3 /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 87 153

# Current Flow [74] [150]
python3 /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 74 150

# Current Power [80] [151]
python3 /home/pi/domoticz/scripts/kamstrup/kamstrup_single.py /dev/ttyUSB0 80 151

Vraag, moet dit per se met python3? Of kan het ook gewoon met Python?
Moet ik even wat dummy sensors aanmaken...

Hoe hebben jullie de IR sensor vastgemaakt aan de Kamstrup meter?

Nu krijg ik dit:
root@Domoticz:/home/pi/domoticz/scripts/python# python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB0-IR 60 65
File "/home/pi/domoticz/scripts/python/kamstrup403.py", line 15
import serial import math import sys import datetime import json import urllib import urllib.request
^
SyntaxError: invalid syntax

[Voor 56% gewijzigd door BlakHawk op 12-03-2019 15:08]

Youtube: DashcamNL


  • BlakHawk
  • Registratie: februari 2008
  • Laatst online: 09-01 11:57
Okee het uitlezen lukt!!!! *O*

Alleen gaat hij ondanks het uitlezen toch in slaapstand -O-

Iemand enig idee?

Youtube: DashcamNL


  • BlakHawk
  • Registratie: februari 2008
  • Laatst online: 09-01 11:57
Hmmm vreemd... Het lijkt helemaal niet nodig dat de meter "wakker" is.
Als ik met de hand nu het script aftrap, gaat het iedere keer goed, ondanks dat de meter uit staat!

Maar in de crontab gaat het niet goed.
Kunnen ze elkaar in de weg zitten?

Crontab:
# Current Temp2 (return) [87] [68]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

# Heat Energy (verbruik) [60] [65]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 60 65

# Volume (m3) [68] [66]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 68 66

# Current Temp1 (forward) [86] [67]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 86 67

# Current Temp2 (return) [87] [68]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

edit:
Dit werkt wel:

# Current Temp2 (return) [87] [68]
4/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

# Heat Energy (verbruik) [60] [65]
3/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 60 65

# Volume (m3) [68] [66]
2/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 68 66

# Current Temp1 (forward) [86] [67]
1/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 86 67

# Current Temp2 (return) [87] [68]
# */5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

Jobs zitten elkaar dus in de weg...

edit:
Te vroeg gejuichd, hij lijkt het hiermee helemaal niet te doen

[Voor 30% gewijzigd door BlakHawk op 13-03-2019 08:26]

Youtube: DashcamNL


  • tsjoender
  • Registratie: april 2005
  • Laatst online: 19:40
dfrenner schreef op woensdag 13 maart 2019 @ 07:49:
Hmmm vreemd... Het lijkt helemaal niet nodig dat de meter "wakker" is.
Als ik met de hand nu het script aftrap, gaat het iedere keer goed, ondanks dat de meter uit staat!

Maar in de crontab gaat het niet goed.
Kunnen ze elkaar in de weg zitten?

Crontab:
# Current Temp2 (return) [87] [68]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

# Heat Energy (verbruik) [60] [65]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 60 65

# Volume (m3) [68] [66]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 68 66

# Current Temp1 (forward) [86] [67]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 86 67

# Current Temp2 (return) [87] [68]
*/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

edit:
Dit werkt wel:

# Current Temp2 (return) [87] [68]
4/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

# Heat Energy (verbruik) [60] [65]
3/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 60 65

# Volume (m3) [68] [66]
2/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 68 66

# Current Temp1 (forward) [86] [67]
1/5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 86 67

# Current Temp2 (return) [87] [68]
# */5 * * * * python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

Jobs zitten elkaar dus in de weg...

edit:
Te vroeg gejuichd, hij lijkt het hiermee helemaal niet te doen
Als ze tegelijk gestart worden dan kan ik me voorstellen dat de eerste een lock op de seriele poort zet en de andere processen falen. Zelf heb ik een klein scriptje gemaakt die het python script x-keer achterelkaar aanroept. Dat scriptje wordt door cron gestart. Voor jou zou dat scriptje er zo uit kunnen zien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

# Heat Energy (verbruik) [60] [65]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 60 65

# Volume (m3) [68] [66]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 68 66

# Current Temp1 (forward) [86] [67]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 86 67

# Current Temp2 (return) [87] [68]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68


Niets fancy, maar voor mij werkt het prima.

  • BlakHawk
  • Registratie: februari 2008
  • Laatst online: 09-01 11:57
tsjoender schreef op woensdag 13 maart 2019 @ 09:09:
[...]


Als ze tegelijk gestart worden dan kan ik me voorstellen dat de eerste een lock op de seriele poort zet en de andere processen falen. Zelf heb ik een klein scriptje gemaakt die het python script x-keer achterelkaar aanroept. Dat scriptje wordt door cron gestart. Voor jou zou dat scriptje er zo uit kunnen zien:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/bash
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68

# Heat Energy (verbruik) [60] [65]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 60 65

# Volume (m3) [68] [66]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 68 66

# Current Temp1 (forward) [86] [67]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 86 67

# Current Temp2 (return) [87] [68]
python3 /home/pi/domoticz/scripts/python/kamstrup403.py /dev/ttyUSB-IR 87 68


Niets fancy, maar voor mij werkt het prima.
Mijn linuxkennis is bijna 0, dus hoe doe ik dit dan?
Is dat dan een python script, of iets anders?

Ik begrijp je idee, dus zet die tekst in een file en die noem ik dan "verzameling_scripts.py" en dan gooi ik die in contab?

Of is het iets anders dan een pi script?

[Voor 6% gewijzigd door BlakHawk op 13-03-2019 09:24]

Youtube: DashcamNL


  • BlakHawk
  • Registratie: februari 2008
  • Laatst online: 09-01 11:57
dfrenner schreef op woensdag 13 maart 2019 @ 09:15:
[...]


Mijn linuxkennis is bijna 0, dus hoe doe ik dit dan?
Is dat dan een python script, of iets anders?

Ik begrijp je idee, dus zet die tekst in een file en die noem ik dan "verzameling_scripts.py" en dan gooi ik die in contab?

Of is het iets anders dan een pi script?
Okee, het is nu zo geworden:

code:
1
2
3
4
5
#!/usr/bin/env bash
python3 /home/pi/domoticz/scripts/python/kamstrup403_1.py /dev/ttyUSB-IR 87 68 && \
python3 /home/pi/domoticz/scripts/python/kamstrup403_2.py /dev/ttyUSB-IR 60 65 && \
python3 /home/pi/domoticz/scripts/python/kamstrup403_3.py /dev/ttyUSB-IR 68 66 && \
python3 /home/pi/domoticz/scripts/python/kamstrup403_4.py /dev/ttyUSB-IR 86 67


Daarvoor heb ik dit uitgevoerd:
code:
1
2
3
root@Domoticz:/home/pi/domoticz/scripts/python# vi warmtemeter.sh
root@Domoticz:/home/pi/domoticz/scripts/python# chmod +x warmtemeter.sh
root@Domoticz:/home/pi/domoticz/scripts/python# ./warmtemeter.sh


En dan in de crontab toevoegen:
code:
1
* * * * * /home/pi/domoticz/scripts/python/warmtemeter.sh


En het werkt!!!

Iedere minuut nu geupdate!!!
Ik ben erg blij!

Zo staat het nu in Domoticz:


Ik heb ervoor gekozen om alleen GJ, m3 en in en uitgaande temperatuur te loggen. Denk dat dat het enige relevante is, toch?

GJ:


m3:


Temp aanlever:


Temp teruglever:

Youtube: DashcamNL


  • MAZZA
  • Registratie: januari 2000
  • Laatst online: 09-06 16:59

MAZZA

Barbie is er weer!

Dit is precies waar ik naar op zoek ben :) Ik heb ook een huis met stadsverwarming en ook ik heb een Kamstrup Multical meter. Echter de 403 ipv de 402 zoals de topic starter.

Helaas, als mijn middelbareschoolduits nog een beetje klopt, leveren ze geen complete IR-kop meer via die site uit de topic start.

Weet iemand of zo'n IR-kop ook elders te bestellen is? Ik heb gezocht maar er wordt meestal verwezen naar bovenstaande site (of naar Smartmeterdashboard, die op haar beurt weer naar Volkszaehler.org verwijst).

Het meeste wat ik vind zijn repeaters voor IR afstandbedieningen. Heeft zo'n ding een naam zodat ik m'n zoekresultaten kan verfijnen?

  • dunklefaser
  • Registratie: oktober 2012
  • Nu online

dunklefaser

Point Of KnowReturn

MAZZA schreef op maandag 25 november 2019 @ 13:19:
Dit is precies waar ik naar op zoek ben :) Ik heb ook een huis met stadsverwarming en ook ik heb een Kamstrup Multical meter. Echter de 403 ipv de 402 zoals de topic starter.

Helaas, als mijn middelbareschoolduits nog een beetje klopt, leveren ze geen complete IR-kop meer via die site uit de topic start.

Weet iemand of zo'n IR-kop ook elders te bestellen is? Ik heb gezocht maar er wordt meestal verwezen naar bovenstaande site (of naar Smartmeterdashboard, die op haar beurt weer naar Volkszaehler.org verwijst).

Het meeste wat ik vind zijn repeaters voor IR afstandbedieningen. Heeft zo'n ding een naam zodat ik m'n zoekresultaten kan verfijnen?
"IR Schreib/Lesekopf USB" (Optokopf) is dat wat je zoekt. Ik heb deze en hij werkt prima met de programmatuur van Kamstrup samen (LogView HCW en METERTOOL HCW)

Nobody is perfeckt - But who wants to be Nobody? - Vrijwillig Energycoach Fiat LUX! - Some Insights


  • MAZZA
  • Registratie: januari 2000
  • Laatst online: 09-06 16:59

MAZZA

Barbie is er weer!

dunklefaser schreef op dinsdag 26 november 2019 @ 20:10:
[...]

"IR Schreib/Lesekopf USB" (Optokopf) is dat wat je zoekt. Ik heb deze en hij werkt prima met de programmatuur van Kamstrup samen (LogView HCW en METERTOOL HCW)
Dank je! Gelijk besteld. Mooi projectje voor de vakantie.

  • Meneerik
  • Registratie: januari 2005
  • Laatst online: 11:58
Is het nog gelukt met deze USB kabel? Wil zelf ook mijn 403 uitlezen , maar ben nog opzoek naar een juiste...

  • martini7
  • Registratie: maart 2011
  • Laatst online: 15-04 16:50
Hier nog iemand die aan het stoeien is om de Kamstrum 403 aan de praat te krijgen.
Via de Kamstrup applicaties (LogView HCW en METERTOOL HCW) krijg ik wel correcte data dus aan de hardware ligt het niet, maar het 402 script werkt niet goed. Deze leest wel data lijkt het, maar kan deze niet omzetten in bruikbare waarden.

Wie heeft er (inmiddels) een werkend script voor de 403?

Update: het is inmiddels gelukt; vreemd genoeg lijkt het uitlezen via het welbekende script wat gevoeliger te zijn vergeleken met de Kamstrup software. Alsof hij bij het script z'n eigen verzonden data weer terugleest via reflectie o.i.d.. In plaats van de IR kop direct op de meter te plaatsen moet ik 'm iets gekanteld erop richten (kan zelfs met 1 cm. afstand van de IR poort; beetje vreemd wel aangezien het geen eigen geknutsel IR kop is.

[Voor 36% gewijzigd door martini7 op 12-06-2020 08:52]


  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
Heeft iemand dit al voor langere tijd in gebruik en/of al eens de batterij van de meter moeten laten vervangen?

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
Ik heb een project gepubliceerd op GitHub voor de Kamstrup Multical 402. Heb een deel van de eerder genoemde code herschreven en wat functionaliteit toegevoegd.
  • Meter waardes worden via MQTT gepubliceerd
  • Instellingen zijn met een configuratie file naar wens te configureren
  • Kan worden ingesteld als achtergrond service
Zie https://github.com/matthijsvisser/kamstrup-402-mqtt

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • Aurora
  • Registratie: augustus 2005
  • Laatst online: 09-06 01:33
Wat wordt precies gevoed met een batterij? De communicatiemodule? Kunnen deze batterijen eventueel zelf vervangen worden?

Don't forget the Cloud is just someone else's computer


  • Aurora
  • Registratie: augustus 2005
  • Laatst online: 09-06 01:33
MMatthijsV schreef op zaterdag 5 september 2020 @ 20:29:
Ik heb een project gepubliceerd op GitHub voor de Kamstrup Multical 402. Heb een deel van de eerder genoemde code herschreven en wat functionaliteit toegevoegd.
  • Meter waardes worden via MQTT gepubliceerd
  • Instellingen zijn met een configuratie file naar wens te configureren
  • Kan worden ingesteld als achtergrond service
Zie https://github.com/matthijsvisser/kamstrup-402-mqtt
Erg waardevol! Ik ben een tijdje geleden afgehaakt, maar ik zie nu allemaal updates in dit topic. Ik ga binnenkort aan de slag met de hulp van jouw project.

Don't forget the Cloud is just someone else's computer


  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
Aurora schreef op woensdag 7 oktober 2020 @ 20:37:
Wat wordt precies gevoed met een batterij? De communicatiemodule? Kunnen deze batterijen eventueel zelf vervangen worden?
De meter zelf werkt op een D cel batterij. Helaas is die verzegeld dus die mag je niet zelf vervangen.

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • Aurora
  • Registratie: augustus 2005
  • Laatst online: 09-06 01:33
MMatthijsV schreef op woensdag 7 oktober 2020 @ 21:05:
[...]


De meter zelf werkt op een D cel batterij. Helaas is die verzegeld dus die mag je niet zelf vervangen.
Thanks! Had altijd gedacht dat deze gewoon via 230v gevoed werd.

Don't forget the Cloud is just someone else's computer


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
MMatthijsV schreef op zaterdag 5 september 2020 @ 20:29:
Ik heb een project gepubliceerd op GitHub voor de Kamstrup Multical 402. Heb een deel van de eerder genoemde code herschreven en wat functionaliteit toegevoegd.
  • Meter waardes worden via MQTT gepubliceerd
  • Instellingen zijn met een configuratie file naar wens te configureren
  • Kan worden ingesteld als achtergrond service
Zie https://github.com/matthijsvisser/kamstrup-402-mqtt
Hello, would it be possible to port it to Home Assistant? I have installed it but I cannot read any mqtt messages in HA. Is there a possibility to add a sample script that checks if the head is reading values? ( I have checked with the Kamstrup software and this does work).

thx!

  • Aurora
  • Registratie: augustus 2005
  • Laatst online: 09-06 01:33
spaya schreef op vrijdag 9 oktober 2020 @ 11:57:
[...]


Hello, would it be possible to port it to Home Assistant? I have installed it but I cannot read any mqtt messages in HA. Is there a possibility to add a sample script that checks if the head is reading values? ( I have checked with the Kamstrup software and this does work).

thx!
Home Assistant supports MQTT. Just add your broker to Home Assistant and that's it. It is even configurable through 'Integrations' in the web UI.

Don't forget the Cloud is just someone else's computer


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
Aurora schreef op vrijdag 9 oktober 2020 @ 12:12:
[...]


Home Assistant supports MQTT. Just add your broker to Home Assistant and that's it. It is even configurable through 'Integrations' in the web UI.
Hi Thx for the`quick reply. I have MQTT configured and read 25 devices, but for some reason this one is not posting messages (same configuration, using serial by id as the identifier for the IR head, putting the poll interval to 1 minute, etc) . I wanted to check that the head is actually reading content as I saw that for some users getting the head facing the meter shows values in windows, but then in the rbpi you need to tilt, separate, etc, so it would be great if there would be a script that you just execute in the terminal and right away you get None or a value if the value is read.

not sure if its possible.

thx!


EDIT: at least progress, now the MQTT plugin receives this:

Message 1 received on kamstrup/values at 12:52:
{}
QoS: 0 - Retain: false
Message 0 received on kamstrup/values at 12:51:
{}
QoS: 0 - Retain: false

In the log it says:

[2020-10-09 12:52:42 kamstrup_meter.py readparameter: 204 - WARNING - Message is invalid]
[2020-10-09 12:52:42 kamstrup_meter.py readparameter: 204 - WARNING - Message is invalid]
[2020-10-09 12:52:42 kamstrup_meter.py readparameter: 204 - WARNING - Message is invalid]
[2020-10-09 12:52:42 kamstrup_meter.py readparameter: 204 - WARNING - Message is invalid]
[2020-10-09 12:52:43 mqtt_handler.py publish: 55 - INFO - Publishing 'kamstrup/values' '{}' to 192.168.1.200:1883]
[2020-10-09 12:52:43 daemon.py run: 84 - INFO - Waiting 1 minute(s) for the next meter readout]

BTW its the kamstrup multical 403, not sure if the scripts need to change, hope not...

[Voor 33% gewijzigd door spaya op 09-10-2020 12:57]


  • Aurora
  • Registratie: augustus 2005
  • Laatst online: 09-06 01:33
spaya schreef op vrijdag 9 oktober 2020 @ 12:36:
[...]

BTW its the kamstrup multical 403, not sure if the scripts need to change, hope not...
Because of this I kind tell you anything. Maybe the owner of the project can tell you something about that.

Don't forget the Cloud is just someone else's computer


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
Aurora schreef op vrijdag 9 oktober 2020 @ 14:10:
[...]


Because of this I kind tell you anything. Maybe the owner of the project can tell you something about that.
Alrigth thx, will follow up via Github :)

EDIT: So it seems to be working, the problem was that it was not active, but strangely enough it stops sending data after 1-2 minutes and you need to press the button in the device to get new values... I thought the pooling of data before the 30 minutes would keep it alive, seems it is not.


Message 107 received on kamstrup/values at 15:07:
{}
QoS: 0 - Retain: false
Message 106 received on kamstrup/values at 15:06:
{
"energy": 47.119,
"volume": 339.923,
"temp1": 67.99,
"temp2": 31.740000000000002
}
QoS: 0 - Retain: false

[Voor 50% gewijzigd door spaya op 09-10-2020 15:10]


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
martini7 schreef op donderdag 11 juni 2020 @ 08:37:
Hier nog iemand die aan het stoeien is om de Kamstrum 403 aan de praat te krijgen.
Via de Kamstrup applicaties (LogView HCW en METERTOOL HCW) krijg ik wel correcte data dus aan de hardware ligt het niet, maar het 402 script werkt niet goed. Deze leest wel data lijkt het, maar kan deze niet omzetten in bruikbare waarden.

Wie heeft er (inmiddels) een werkend script voor de 403?

Update: het is inmiddels gelukt; vreemd genoeg lijkt het uitlezen via het welbekende script wat gevoeliger te zijn vergeleken met de Kamstrup software. Alsof hij bij het script z'n eigen verzonden data weer terugleest via reflectie o.i.d.. In plaats van de IR kop direct op de meter te plaatsen moet ik 'm iets gekanteld erop richten (kan zelfs met 1 cm. afstand van de IR poort; beetje vreemd wel aangezien het geen eigen geknutsel IR kop is.
Does your 403 continuously report, or after 3 minutes stops reporting? I have sent an email to the customer service of Kamstrup to see if there is a way to overwrite.

  • Chrisiesmit93
  • Registratie: februari 2009
  • Laatst online: 13:29
Werkt deze methode ook met bijv. een zelfbouw schakeling oid of heb je die IR oog nodig ?

  • kabeltjekabel
  • Registratie: april 2018
  • Laatst online: 13-02 01:33
MMatthijsV schreef op woensdag 7 oktober 2020 @ 21:05:
[...]


De meter zelf werkt op een D cel batterij. Helaas is die verzegeld dus die mag je niet zelf vervangen.
Ja, een Lithium primary.
Aurora schreef op woensdag 7 oktober 2020 @ 21:44:
[...]


Thanks! Had altijd gedacht dat deze gewoon via 230v gevoed werd.
Dat bestaat ook. De uitvoering met batterij schijnt goedkoper te zijn in aanschaf als je er als beheerder vanuit gaat dat je die batterijen niet hoeft te vervangen :+

  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
Chrisiesmit93 schreef op zaterdag 10 oktober 2020 @ 20:12:
Werkt deze methode ook met bijv. een zelfbouw schakeling oid of heb je die IR oog nodig ?
Je zou het zelf kunnen maken. In principe is het geen ingewikkelde schakeling. Het programma heeft alleen een seriële poort nodig om informatie te kunnen ontvangen en versturen.

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • Chrisiesmit93
  • Registratie: februari 2009
  • Laatst online: 13:29
Ikzelf zit niet echt in de electronica wereld, maar zou iets als dit (in combinatie met een Raspbbery bijv.) werken voor het uitlezen van de Multical 403 ?
https://www.banggood.com/...l-Port-38K-p-1329234.html

  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
Chrisiesmit93 schreef op zondag 11 oktober 2020 @ 09:14:
Ikzelf zit niet echt in de electronica wereld, maar zou iets als dit (in combinatie met een Raspbbery bijv.) werken voor het uitlezen van de Multical 403 ?
https://www.banggood.com/...l-Port-38K-p-1329234.html
Ja dat zou kunnen werken. Uit ervaring weet ik alleen dat het zelfs met een ingekochte infrarood kop wel even zoeken is voor de juiste positie van de oogjes. |:( Die jij nu linkt gaat vermoed ik wel last krijgen van reflectie van zijn eigen uitgestraalde infrarood licht.

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
MMatthijsV schreef op zondag 11 oktober 2020 @ 19:27:
[...]


Ja dat zou kunnen werken. Uit ervaring weet ik alleen dat het zelfs met een ingekochte infrarood kop wel even zoeken is voor de juiste positie van de oogjes. |:( Die jij nu linkt gaat vermoed ik wel last krijgen van reflectie van zijn eigen uitgestraalde infrarood licht.
I have been playing with the meter the whole weekend (Kamstrup 403), modified the timing of your script and concluded that after 240 seconds the IR goes to sleep (I can get 240 successful readings before it stops working).

I see two options, keep the button pressed indefinitely, which I havent figured out a way yet how to do, and keep pressed :), or somehow send a keepalive/timer reset value via IR, do you know if there is anywhere an option to send this?

thx!

  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
spaya schreef op maandag 12 oktober 2020 @ 17:57:
[...]


I have been playing with the meter the whole weekend (Kamstrup 403), modified the timing of your script and concluded that after 240 seconds the IR goes to sleep (I can get 240 successful readings before it stops working).

I see two options, keep the button pressed indefinitely, which I havent figured out a way yet how to do, and keep pressed :), or somehow send a keepalive/timer reset value via IR, do you know if there is anywhere an option to send this?

thx!
I don't have the Kamstrup 403 meter, so I can't reproduce your problem.
Have you tried polling the meter values with the official Kamstrup software for longer than 4 minutes? I'm not aware of a method to wake the meter without having physical access to the meter. I do know that when using the 402, the kamstrup software gives a popup when it isn't able to communicate with the meter when it is in stand-by mode and suggests to press a button to wake it.

[Voor 0% gewijzigd door MMatthijsV op 12-10-2020 19:35. Reden: typo]

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
MMatthijsV schreef op maandag 12 oktober 2020 @ 18:45:
[...]

I don't have the Kamstrup 403 meter, so I cant reproduce you problem.
Have you tried polling the meter values with the official Kamstrup software for longer than 4 minutes? I'm not aware of a method to wake the meter without having physical access to the meter. I do know that when using the 402, the kamstrup software gives a popup when it isn't able to communicate with the meter when it is in stand-by mode and suggests to press a button to wake it.
Which software do you mean? I installed the metertool and the logtool, I can load the meter there, but I can’t read consumption values (or I don’t know where to look) :)

Found it, but same as what I experience on the rpbi.

[Voor 20% gewijzigd door spaya op 12-10-2020 19:19]


  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
spaya schreef op maandag 12 oktober 2020 @ 18:52:
[...]

Found it, but same as what I experience on the rpbi.
Found this on the Domoticz forum; someone claims that the 403 doesn't have to be awake.
https://www.domoticz.com/...dad2648c738e1b31&start=20
... The advantage of the 403 meter is that it doesn't need to be 'awake' to read. You can do it anytime.

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
MMatthijsV schreef op maandag 12 oktober 2020 @ 19:59:
[...]


Found this on the Domoticz forum; someone claims that the 403 doesn't have to be awake.
https://www.domoticz.com/...dad2648c738e1b31&start=20

[...]
I also saw that, but in my case its not working all the time. Also upon entering the advanced mode in the Meter tool I see this, which confirms my findings...

Not sure if there is much more to do since anything I tried to change gets me back to the fact that I am in userland and to get to "setup Loop" I need to break the security seals.


  • martini7
  • Registratie: maart 2011
  • Laatst online: 15-04 16:50
No need for me to keep the 403 ‘alive’.
I read it every 5 minutes with just 2 values (heat temp in/out) and every 15 minutes in full (meter reading).

  • spaya
  • Registratie: november 2013
  • Laatst online: 12-06 20:09
martini7 schreef op donderdag 15 oktober 2020 @ 22:18:
No need for me to keep the 403 ‘alive’.
I read it every 5 minutes with just 2 values (heat temp in/out) and every 15 minutes in full (meter reading).
Strange, not sure why for me after 4 minutes it shuts down :(, must be a setting of Vattenfal.

  • Atomstar
  • Registratie: juli 2002
  • Laatst online: 16-05 18:20
Small bump, but I also managed to get the Kamstrup Multical 403 working. No need to wake it up, as long as there's a (strongish) magnet near the optical port. I documented my findings here, hope it helps others :)

TL;DR: using the hal9k.dk reader head, connect to FTDI USB TTL dongle, read out using my PyMultical script.

  • NijsKei
  • Registratie: juni 2013
  • Laatst online: 31-05 21:18
Ik ben ook aan dit project begonnen maar vraag me 1 ding af. Kan je bij de kamstrup meter net als bij een IR afstandbediening met een camera zien of er IR signaal wordt verzonden. Ik heb er mijn twijfels over bij mijn meter.

  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
NijsKei schreef op zondag 14 februari 2021 @ 00:57:
Ik ben ook aan dit project begonnen maar vraag me 1 ding af. Kan je bij de kamstrup meter net als bij een IR afstandbediening met een camera zien of er IR signaal wordt verzonden. Ik heb er mijn twijfels over bij mijn meter.
Pas wanneer je een commando hebt gestuurd zal de meter antwoorden, die methode zal dus helaas niet werken.

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • NijsKei
  • Registratie: juni 2013
  • Laatst online: 31-05 21:18
Ik dacht dat de meter ook signaal gaf als je een knop indrukt. Ik heb de 602 en die zal wel weer anders werken.

  • Chrisiesmit93
  • Registratie: februari 2009
  • Laatst online: 13:29
spaya schreef op vrijdag 16 oktober 2020 @ 08:33:
[...]
Strange, not sure why for me after 4 minutes it shuts down :(, must be a setting of Vattenfal.
@spaya Same "problem" over here with the Kamstrup Multical 403 (from "Warmtebedrijf Ennatuurlijk"), it "dies" after ~4 minutes.

@MMatthijsV ik besef mij net pas ik je script hiervandaan had en ook hier had kunnen reageren ipv via Github :P
Maar goed, de meter hier houdt er helaas mee op na 4 min geen activiteiten van de knoppen :(
Ook via LogView HCW en METERTOOL HCW is er geen leven in te krijgen, ook niet als je op de "ON knop" van deze afbeelding klikt:
Weet iemand of hier een oplossing voor is ? :)
Behalve een switchbot gebruiken om op de schakelaar te zetten :9

[Voor 3% gewijzigd door Chrisiesmit93 op 18-02-2021 21:53]


  • MMatthijsV
  • Registratie: oktober 2012
  • Laatst online: 19:12
Chrisiesmit93 schreef op donderdag 18 februari 2021 @ 21:45:
@MMatthijsV ik besef mij net pas ik je script hiervandaan had en ook hier had kunnen reageren ipv via Github
Weet iemand of hier een oplossing voor is ? :)
Behalve een switchbot gebruiken om op de schakelaar te zetten :9
Haha, dit is ook prima!
Chrisiesmit93 schreef op donderdag 18 februari 2021 @ 21:45:
Weet iemand of hier een oplossing voor is ? :)
Behalve een switchbot gebruiken om op de schakelaar te zetten :9
Heb je het onderstaande al geprobeerd/ doorgelezen? Zelf heb ik de 402, dus ik kan het niet voor je testen.
Atomstar schreef op zondag 22 november 2020 @ 19:38:
No need to wake it up, as long as there's a (strongish) magnet near the optical port. I documented my findings here, hope it helps others :)

https://github.com/matthijsvisser/kamstrup-402-mqtt


  • Chrisiesmit93
  • Registratie: februari 2009
  • Laatst online: 13:29
MMatthijsV schreef op donderdag 18 februari 2021 @ 22:12:
[...]
Heb je het onderstaande al geprobeerd/ doorgelezen? Zelf heb ik de 402, dus ik kan het niet voor je testen.
[...]
De oplossing, een magneet er bij plaatsen inderdaad! >:)
Ik heb er een magneet bijgehouden en voelde hem gelijk aangetrokken worden, in de logging gekeken en zag dat er gelijk data verstuurd werd zonder dat ik een knop ingedrukt heb (laatste keer is gisteravond ergens data verstuurt).

Bedankt voor de hulp! 8)
Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True