Der Q3D hat die IR-Schnittstelle oben drauf. Man benötigt eine Adapterplatte um den IR-Schreib-Lesekopf zu befestigen.
Der IR-Kopf wird mit der Zuleitung nach vorne montiert.
Alternativ gleich ein 3D gedrucktes Gehäuse für die Montage einer NodeMCU auf dem Easymeter. https://github.com/flohoff/easymeterq3d-topcase
Der Q3D benötigt nur teilweise eine Aufforderung um seine Daten zu senden. Die Kommunikation erfolgt mit 9600bd, 7E1.
Eine vzlogger.conf zur Ermittlung der Daten, die der Zähler sendet:
Eine exemplarische vzlogger.conf:
{
"retry": 0,
"verbosity": 15,
"log": "/var/log/vzlogger/vzlogger.log",
"local": {
"enabled": false,
"port": 8081,
"index": false,
"timeout": 0,
"buffer": 0
},
"meters": [
{
"enabled": true,
"allowskip": false,
"interval": -1,
"aggtime": -1,
"aggfixedinterval": false,
"channels": [
{
"api": "volkszaehler",
"uuid": "hier deine, beim Erstellen des Kanals im Frontend erhaltene UUID, eintragen",
"identifier": "1-0:1.8.0",
"middleware": "http://localhost/middleware.php",
"aggmode": "none",
"duplicates": 0
}
],
"protocol": "d0",
"device": "/dev/ttyUSB0",
"baudrate": 9600,
"parity": "7e1"
}
]
}
Wie man den Easymeter am NetIO von Pollin in den Volkszähler bekommen hat:
Auszug aus der usart.h
/* init the usart module */
#define generate_usart_init() \
static void \
usart_init(void) \
{\
/* The ATmega644 datasheet suggests to clear the global\
interrupt flags on initialization ... */\
uint8_t sreg = SREG; cli(); \
usart(UBRR,H) = UBRRH_VALUE; \
usart(UBRR,L) = UBRRL_VALUE; \
/* set mode: 7 bits, 1 stop, even parity, asynchronous usart 7e1 Q3D*/ \
/* and set URSEL, if present, */ \
usart(UCSR,C) = _BV(usart(UCSZ,1)) | _BV(usart(UPM,1)) | _BV_URSEL; \
/* Enable the RX interrupt and receiver and transmitter */ \
usart(UCSR,B) |= _BV(usart(TXEN)) | _BV(usart(RXEN)) | _BV(usart(RXCIE));\
/* Set or not set the 2x mode */ \
USART_2X(); \
/* Go! */ \
SREG = sreg;\
}