Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Lesing av AMS data (AMS/HAN -> IoT)


Anbefalte innlegg

On 31.8.2018 at 22:48, ZoRaC said:

 

 

Edit:

Du kjører «include kaifa.h»?

 

Ja inkludert kaifa.h er med.

 

Hentet ut litt logge info:

Eg tolker dette slik at det er noen meldinger som blir lest men at deti kke blir generert MQTT telegram på meldingen på 91 bytes, spørsmålet er hvorfor ikke?

edit: har funnet ut at listSize rapprteres som 9 og ikke 13.. på DLMS data(91 bytes). Og dermed eksisterer det ingen tilhørende liste..

har funnet ut av dette nå,  vi har to ekstra lister for 1 fase, liste 9 og 14.   Endringer for å kjøre på D1 mini med BKK Kaifa/nuri enfase måler ligger på https://github.com/stedy6/AmsToMqttBridge
Time of the package is: 1535806382
Sending data to MQTT: {"id":"EC:FA:BC:14:3B:16","up":577300,"t":1535806382,"data":{"temp":"-127.00","P":1229}}

 

Endret av Stedy
meir infor og endur
  • Like 2
Lenke til kommentar
Del på andre sider

Har en Kampstrup måler fra Agder Energi, og de sier de har åpnet porten...

 

Får kun Målernavn, Måler nr og anleggsnummer hvert 10. sekund...:

<quote>

- â+!#šæçâ                                                                      
 ÿ€                                                                             
   Kamstrup_V0001       ÿ                                                       
                         5706567293869186       `ÿ                              
                                                  6841121BN245101040    ÿï     Â
-ÿ€üäÿ~ â+!#šæçâ                           
</quote>

 

2400 baud 8N1...

 

Forsøkt med begge m-bus/usb konverterene som refereres oftest til her...

 

Betyr dette at AE ikke har åpnet, eller at begge konverterene mine er Fc*ked?

 

TIA...

 

Lenke til kommentar
Del på andre sider

Beklager forrige post... 
Jeg får de data jeg skal :-)

Kamstrup måleren sender 2 data blokker... P+-, R+- , U1-3 og I1-3. hver 10. sekund.

Denne blokka starter med 7E A0... og slutter med 7E.

 

En gang i timen skal det komme en utvidet blokk med Energi (akkumulert målerstand) i tillegg...

Noen som vet hvordan ID er på denne, så jeg ser forskjell på de?

 


 

 

Lenke til kommentar
Del på andre sider

8 timer siden, Stedy skrev:

 

Kjekt hvis du deler koden på f.ex på GitHub.

 

Det skal jeg få gjort...

 

I mellomtiden kan jeg jo legge det med som et vedlegg...

2 disclaimers...
 - Kaifa.h er ikke portet (ennå)

 - CRC16 sjekken i DlmsReader.Read(...) er rem'et ut, da CRC16 rutinen min hadde en bug i seg...

 

AMS_2.zip

Endret av Dag Sunde
Lenke til kommentar
Del på andre sider

19 timer siden, Dag Sunde skrev:

Jeg har som vanlig vært utolmodig, og mast før jeg har lest meg opp... :-)

 

Jeg har nå  portet roarfred's kode jeg fant her: HanReader til C#, og det fungerte på første kjøring.
 

Tuuusen takk! :-D

 

 

Jeg regner med at du så at koden allerede finnes i C#? https://github.com/roarfred/AmsToMqttBridge/tree/master/Code/HanDebugger/HanDebugger

Lenke til kommentar
Del på andre sider

On 8/21/2018 at 14:20, aleks said:

 

Ja, har alle faser tilkoblet. Ser noen felter stemmer, men andre ikke gjør det. Kan være konverteringen jeg har mellom serial og slip data - hvilke kode brukte du fra rådata (buffer) -> slip?

 

Er det korrekt hos deg at total eksport resettes ca kl. 09:05 om morgenen (den teller opp kwH opp til det tidspunktet, så resettes) og import ca 13:30 (dog jeg får de dataene på byte 40-47

 

Dette kan bunne seg i feil i konverteringen til slip - brukte aidon scriptet til en tidligere her i tråden til å lage slip, og node red til å dekode den.

 


#!/usr/bin/python

import serial
import time
import struct
import sys
import paho.mqtt.client as mqtt
import binascii

client = mqtt.Client()

client.connect("192.168.1.5", 1883, 60)
client.will_set("AMS/raw", payload=None, qos=0, retain=True)


# SLIP constants
FEND = '\xc0'


def parse(pkt):
    print "".join("{:02x}".format(ord(c)) for c in pkt)

    print len(pkt)
   # pkt = pkt[len(pkt)-79:]
   # print pkt
    if len(pkt) == 99:

        client.publish(
            "AMS/slip", "".join("{:02x}".format(ord(c)) for c in pkt))

    else:
        print "Length mismatch"


if len(sys.argv) != 2:
    print "Missing port argument"
    sys.exit(0)

buf = ""
ser = serial.Serial(sys.argv[1], baudrate=9600,
                    timeout=0, parity=serial.PARITY_NONE)

while(1):
    if ser.inWaiting():

        buf += ser.read(200)
        if FEND in buf:
            # Split message at the SLIP FEND character
            [pkt, buf] = buf.split(FEND)
            # Replace escape sequences in SLIP message
            pkt = pkt.replace("\xdb\xdc", "\xc0")
            pkt = pkt.replace("\xdb\xdd", "\xdb")

            parse(pkt)


client.loop_forever()

 

 

Hvordan henter du ut dette i Node Red ?

Lenke til kommentar
Del på andre sider

3 hours ago, Thomas said:

Hvordan henter du ut dette i Node Red ?

 

Tenker du på hele flowen eller bare hvordan jeg fysisk hentet det ut?

 

I denne sendte jeg bare slip data til en MQTT-stream, brukte MQTT->buffer i Node red og brukte binærdekodingspluginet. Det er ikke umulig jeg har en kopi av hele flowen (sluttet på med Node Red og pørver å kjøre det native i HS), men hvis du vil ha flowen kan jeg sikkert hente det ut fra HomeSeer-backupen og legge inn her

Lenke til kommentar
Del på andre sider

  • 2 uker senere...

Mulig det står på en av disse sidene, men det begynner å bli en lang tråd - hvordan kan jeg debugge dette?

 

Dette får jeg opp når jeg kobler til med 2400 baud:

Connecting to WiFi network XXXXX

WiFi connected
IP address:
192.168.xx.xxMBUS serial setup complete

Etter det kommer det ingenting og jeg ville jo forventet at det kom mer, ref:

if (debugger) {
	debugger->println();
	debugger->println("WiFi connected");
	debugger->println("IP address: ");
	debugger->println(WiFi.localIP());
	debugger->print("\nconnecting to MQTT: ");
	debugger->print(ap.config.mqtt);
	debugger->print(", port: ");
	debugger->print(ap.config.mqttPort);
	debugger->println();
}

Jeg ser at den kobler til MQTT, for dette kommer på brokeren:

{"id":"5C:CF:xx:xx:xx:xx","up":8540,"data":"Connected!"}

EDIT:

Det er denne jeg bruker:

https://github.com/DIYglenn/AmsToMqttBridge/tree/master/Code/Arduino/AmsToMqttBridge

Endret av ZoRaC
Lenke til kommentar
Del på andre sider

1 minutt siden, xibriz skrev:

Koden som ligger ute i @roarfred sin GitHub fungerer kun for Kalifa.

 

Det er Kaifa jeg har. :) 

 

Men den debug-blocken i koden tyder jo på at den skal printe mer, men at den blir avbrutt. Derfor lurer jeg på om det er noe annet galt som gjør at det ikke kommer mer output enn det der?

Lenke til kommentar
Del på andre sider

18 minutter siden, xibriz skrev:

Jeg ville prøvd å fjerne \n i debugger->print("\nconnecting to MQTT: ");  bare for å ha prøvd noe.

 

Det hjalp ikke.

Men, ser ut til at den faktisk blir avbrutt, for nå kom det:

192.168MBUS serial setup complete

EDIT:

Jeg har ikke satt noe "subscribe topic", men det skal vel ikke ha noe å si?

 

Endret av ZoRaC
Lenke til kommentar
Del på andre sider

9 timer siden, ZoRaC skrev:

 

Det hjalp ikke.

Men, ser ut til at den faktisk blir avbrutt, for nå kom det:


192.168MBUS serial setup complete

EDIT:

Jeg har ikke satt noe "subscribe topic", men det skal vel ikke ha noe å si?

 

 

Tja... subscribe topic brukes ikke i koden til noe. Men jeg er usikker på om det blir krøll med skriving/lesing mot EPROM dersom den er tom (jeg er ikke noen c++ wizzard).

 

Jeg ville satt den til noe for å være sikker.

Lenke til kommentar
Del på andre sider

Skal debug fungere via microUSB, ref det under? Eller må jeg bruke en "ekstern" programmerer der jeg kan koble til bare på TX-pinnen?

Jeg har koblet TSS721 sin TXD mot RX (GPIO3/RXD0) på NodeMCU.

På 19.3.2018 den 20.27, roarfred skrev:

Et lite minus er at der ikke er lagt til rette for debug-port på Serial1, men litt tidligere i tråden ble det antydet at vi kanskje kan kjøre debugging på samme port som programmeringen. (og da samme port som HAN porten er koblet til, men vi bruker bare RX på HAN og bare TX på debug. Det som kan gjøre dette litt klønete er at HAN port er satt opp med 2400 baud og 8E1 på Kaifa, og dermed må også debug skje på samme setup)

 

EDIT:

Tror jeg gjør det så enkelt som å implementere dette biblioteket i stedet:

https://github.com/JoaoLopesF/RemoteDebug

Da slipper jeg samtidig å stå med PCen i sikringskapet... :P 

Endret av ZoRaC
Lenke til kommentar
Del på andre sider

Ja det er litt klønete med NodeMCU. Jeg fikk den ikke til å fungere med debug på USB. Når jeg gikk over til en ren ESP8266 chip så gikk alt mye bedre angående debugging, men til slutt så gjorde jeg slik du siterte å da kan du vel bruke NodeMCU uansett.

 

Trikset er å strekke en 25m ethernet fra sikringsskapet til der du sitter for testing :D

  • Like 1
Lenke til kommentar
Del på andre sider

28 minutter siden, ZoRaC skrev:

Skal debug fungere via microUSB, ref det under? Eller må jeg bruke en "ekstern" programmerer der jeg kan koble til bare på TX-pinnen?

Jeg har koblet TSS721 sin TXD mot RX (GPIO3/RXD0) på NodeMCU.

 

EDIT:

Tror jeg gjør det så enkelt som å implementere dette biblioteket i stedet:

https://github.com/JoaoLopesF/RemoteDebug

Da slipper jeg samtidig å stå med PCen i sikringskapet... :P 

MicroUSB er kun power og har ingen data-linjer så vidt jeg husker.

Funket fint for meg å logge på programmeringspinnene etter at sw var i gang.

men jeg tror RemoteDebug er en kanon-ide :-)

 

Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.