S0-Interface für die CCU

User stellen ihre Haussteuerung vor

Moderator: Co-Administratoren

Benutzeravatar
micky1962
Beiträge: 44
Registriert: 07.09.2012, 14:53

S0-Interface für die CCU

Beitrag von micky1962 » 03.01.2013, 22:11

Hallo,

Nach einigen längeren Unterbrechungen hab ich jetzt mein S0-Interface im Probelauf.

Die Schaltung ist um einen mbed (siehe: https://mbed.org/handbook/mbed-NXP-LPC1768) aufgebaut.

Die S0-Impulse des Stromzählers werden an einem Interrupteingang gezählt, und in regelmässigen Abständen übers LAN an die CCU in einer Systemvariablen abgelegt. Wie gesagt läuft das Ganze jetzt noch auf Probe, aber theoretisch sind mehrere Zählereingänge möglich.

Hier einige Features, die jetzt schon laufen:
- Zählregister sind von einer Knopfzelle gepuffert. Bei einem Stromausfall bleiben die Daten erhalten.
- Firmwareupdate übers LAN oder Internet.

Ich halte euch hier gerne auf dem Laufenden und gebe weitere Infos, falls sich jemand dafür interressiert :mrgreen:

Bis dann...
Gruß, Michael

Benutzeravatar
helmi74
Beiträge: 422
Registriert: 03.06.2012, 13:49
Danksagung erhalten: 1 Mal

Re: S0-Interface für die CCU

Beitrag von helmi74 » 04.01.2013, 11:03

Mehr Info!!!

So kann ich meinen SO-Zähler dann vielleicht doch noch mit der CCU verbinden ohne extra nur für diese Geschichte ein 12/14 Modul anzuschaffen....;-)

Zählst du nur Impulse um die angelaufenen KW/h's zu sehen oder lässt du dir auch den Momentan-Verbrauch anzeigen??
Zuletzt geändert von helmi74 am 05.01.2013, 14:22, insgesamt 1-mal geändert.

Benutzeravatar
micky1962
Beiträge: 44
Registriert: 07.09.2012, 14:53

Re: S0-Interface für die CCU

Beitrag von micky1962 » 04.01.2013, 16:19

Hallo,

Im Moment zähl ich nur die Impulse von einem Zähler, und teile dann durch 800 (mein Zähler gibt 800 Impulse pro kWh aus). Das mit dem Momentan-Verbrauch kommt, wenn ich alles perfekt am Laufen habe.

Hab noch einige Impulse zuviel, muss wohl doch auf Optokoppler zurück greifen, um den mbed von eventuellen Parasiten auf der Leitung zu entkoppeln.

Auf der Seite https://mbed.org/users/DerMich/notebook ... -counting/ könnt ihr meine weiteren Schritte verfolgen.

So sieht der Code aus:

Code: Alles auswählen

/*  Impulse Counter for energie meters with S0-Interface

 Dev Phase 1:
 * Count impulses (InterruptIn) in non-volatile register of RTC. (5 are possible)  
   GPREG0…GPREG4 RTC-RAM battery buffered 5*32bit
 * Calculate count / 800 to get kwh.
 * Send result to CCU via DB-ACCESS to display and calc there.
 
 
 Pins:
 P5 - Counter1
 P6 - Reset Counter1
 
 Foreseen: more counters
 P7 - Counter2
 P8 - Reset Counter2
 
 
 Hardware:
 - InterruptIn pin 5 to energy meter S0 pin 9(open collector pin 9 = + pin 8 = GND).
 - Pullup of 2.2k to 3.3v or internal pullup.
 - GND mbed to pin 8 energy meter.
*/



#include "mbed.h"
#include "FirmwareUpdater.h"         // Auto update this program
#include "EthernetNetIf.h"           // Ethernet 
#include "HTTPClient.h"              // HTTP Client. 


#define VERSION 10                   // for automatic update
#define FIRMWARE_CHECK_INTERVALL 600 // Seconds                              
#define SEND_INTERVALL 120           // Seconds 



EthernetNetIf eth;                   // Instantiate the interface using DHCP:
/*                                   // Instantiate the interface using own parameters:
EthernetNetIf eth(
  IpAddr(192,168,1,101),             //IP Address
  IpAddr(255,255,255,0),             //Network Mask
  IpAddr(192,168,1,1),               //Gateway
  IpAddr(192,168,1,1)                //DNS
);
*/



HTTPClient http;




FirmwareUpdater fwup("http://192.168.1.4:90/mbedFirmwareUpdater/mbed3/", "firm", false); 
// There are 2 files for the firmware.
//  1. firm.txt : firmware version file.
//  2. firm.bin : firmware binary file.



// Set Ticker for update check
Ticker updater;
// Set Ticker for sending to CCU
Ticker sending;



void check_update(){
    // Check for new firmware     
    if (fwup.exist() == 0) {
         printf("Found a new firmware.\n");
         if (fwup.execute() == 0) {
         printf("Update succeed.\n");
         printf("Resetting this system...\n\n\n\n\n");
         fwup.reset();
     } else {
        printf("Update failed!\n");
       }
     }
}       


// Counter Functions
void inc_counter1() {
    LPC_RTC->GPREG0++;
}
void reset_counter1() {
    LPC_RTC->GPREG0 =0;
}
int read_counter1() {
    return LPC_RTC->GPREG0;
}
float calculated_counter1() {
        float f = LPC_RTC->GPREG0;
        return f/800; 
}


    
void send_CCU() {
    // Update system variable in CCU via LAN. CCU_IP = 192.168.1.4 
    // DB-ACCESS addon must be installed.   
    char url[192] = {0};
    sprintf(url, "http://192.168.1.4/addons/db/state.cgi?item=EnergieverbrauchWhirlpool&value=%f",calculated_counter1());
    HTTPText txt;
    HTTPResult r = http.get(url, &txt);
}



// Using the four LEDs to show status.
BusOut leds(LED1, LED2, LED3, LED4);



int main() {
    int Version = VERSION;
    printf("\r\n S0-Interface Counter by Michel Jank\r\n");
    printf("Version: %d\r\n",Version);
    leds = Version; 
        
    // Setup Ethernet
    eth.setup();
   
    // Set Ticker for Firmware Updater check.
    updater.attach(&check_update, FIRMWARE_CHECK_INTERVALL); // the address of the function to be attached (check_update) and the interval (60 seconds)

    // Set Ticker for sending to CCU.
    updater.attach(&send_CCU, SEND_INTERVALL); // the address of the function to be attached (send_CCU) and the interval (120 seconds)

    // counter1 on pin 5
    InterruptIn counter1(p5);
     
    // for button "set counter to zero"
    InterruptIn button(p6);
             
    button.rise(&reset_counter1);  // attach the address of the function to the rising edge
    counter1.rise(&inc_counter1);  // attach the address of the function to the rising edge
    while(1) {
        
        printf("Impulses count so far: %d\r\n", read_counter1());
        printf("calculated: %f\r\n", calculated_counter1());
        
        wait(10);
    }
}
Wie ihr sehen könnt, muss auf der CCU das Addon DB-Access laufen. Einer meiner nächsten Schritte wird sein, über xmlrpc zu senden. Dann braucht auf der CCU nur noch eine Systemvariable angelegt zu werden.
Gruß, Michael

Benutzeravatar
micky1962
Beiträge: 44
Registriert: 07.09.2012, 14:53

Re: S0-Interface für die CCU

Beitrag von micky1962 » 05.01.2013, 12:46

Wie sieht das bei euch aus? Welche Zähler benutzt ihr?
Gruß, Michael

dondaik
Beiträge: 12945
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1625 Mal
Danksagung erhalten: 222 Mal

Re: S0-Interface für die CCU

Beitrag von dondaik » 05.01.2013, 13:34

bei mir soll ein geeichter dreiphasenzähler verbaut werden ( 1x mit digitaler anzeigei / 1x mit anzeige alter art / hersteller ?? liegt noch in einer umzugskiste ) nur muss dazu eine neue unterverteilung her da die jetzigen minimalistisch sind :-( ( nicht mal platzt für HM-hutschienenmodule )
ist dein jetztiges modul mit lan-schnittstelle? genial wäre es wenn es später nur durch eingabe der ccu-ip im modul, die messdaten auf der ccu in systemvariablen schreibt und man sie dort "abholen kann". auch deine idee mit der dcf-uhr ist top!
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Benutzeravatar
micky1962
Beiträge: 44
Registriert: 07.09.2012, 14:53

Re: S0-Interface für die CCU

Beitrag von micky1962 » 05.01.2013, 18:08

Das Modul hat LAN onboard, allerdings kein Connector. Ich benutze zur Zeit folgendes Steck-Board:
https://mbed.org/cookbook/Cool-Componen ... shop-Board, da ist alles drauf.

Zur einmaligen Eingabe finde ich LCD und Taster übertrieben. Ich denke eher daran, dass man einfach eine Datei mit den nötigen Daten (Ip der CCU und Ziel-Variablen) auf das Modul überträgt. Das Modul hat auch USB, und kann am PC wie ein Stick betrieben werden. Könnte auch ein Konfigurationsprogramm schreiben.
Gruß, Michael

dondaik
Beiträge: 12945
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1625 Mal
Danksagung erhalten: 222 Mal

Re: S0-Interface für die CCU

Beitrag von dondaik » 05.01.2013, 18:34

genau, das teil soll zählen, und keine gespräche mit dem display führen :-) :-) dann hat es ggf später noch zeit einige spannungswerte zb temperatur, feuchte oder luftdruck zu übermitteln ( spart dann das HM i/o modul )
Frage: aber alle wichtigen daten sind und bleiben im interface und schreiben in richtung ccu da diese je nicht als stabil zu sehen ist und datenverlust möchte man ja vermeiden :-)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

leinich
Beiträge: 157
Registriert: 03.09.2012, 22:30

Re: S0-Interface für die CCU

Beitrag von leinich » 22.01.2013, 20:33

Sehr interessant.

Ich habe schon mit volkszaehler.org auf einem Raspberry Pi geliebäugelt.
Sehe ich das richtig dass ich lediglich folgende Teile benötige?

1) MBED/LPC1768 = 50€
2) Netzteil mit 5V min 200mA
3) 3V Lithium Batterie
4) Netzwerkkabel

Habe ich was vergessen?

Benutzeravatar
micky1962
Beiträge: 44
Registriert: 07.09.2012, 14:53

Re: S0-Interface für die CCU

Beitrag von micky1962 » 23.01.2013, 19:08

Also, ein Magjack ist nicht auf dem Board. Auch keine Fassung für die Batterie.
Ausserdem sollte man die Eingänge doch besser über Optpkoppler führen.
Die Hardware wird aber sehr wahrscheinlich unter 100 Euro bleiben.
Wenn ich fertig bin, werde ich den Schaltplan und die Software gerne hier posten.

Dann mal noch'n bisschen Geduld, ihr braucht den Lötkolben noch nicht zu heizen :D
Gruß, Michael

dondaik
Beiträge: 12945
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1625 Mal
Danksagung erhalten: 222 Mal

Re: S0-Interface für die CCU

Beitrag von dondaik » 23.01.2013, 19:12

ok :-)
ggf kannst du ja was sagen was wäre wenn man über dein projekt direkt einen i2c bus der ccu übergibt ( das war aber nur ein gedanklicher schnellschuss :-) )
nür wäre man dann auf den weg zu einem multi-i/o-board .... das war sicher nicht der gedanke zum start des propjektes.
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Antworten

Zurück zu „Projektvorstellungen“