pixel
Gebruik maken van een S0 meter & Domoticz 2

Gebruik maken van een S0 meter & Domoticz

0
(0)

Een s0 meter (deze is geschikt tot 45A) is erg handig om bijvoorbeeld tussen de zonnepanelen op het 230v uitgang te zetten.
Als je geen omvormer hebt die je via het netwerk kan uitlezen.
Deze zet je ertussen en met een Arduino en een weerstand kan je beginnen met het bijhouden van de pulsen en dus zo de opbrengst bij gaan houden. En deze doorgeeft aan je domoticz.

Gebruik maken van een S0 meter & Domoticz 3
C-Control DPM-1200 Energiekostenmeter Verlicht display
Gebruik maken van een S0 meter & Domoticz 4

Werking van S0 kabel Normaliter is het S0 contact open.
De “digital in” pin is verbonden met de GND via een weerstand.
Als een pin verbonden is met de GND heeft hij de status LOW.
Zodra het contact sluit gaat er een stroompje lopen van de 5v naar de “digital in” en krijgt dan de status HIGH.
Het contact gaat direct (na de debounce tijd, 30ms) weer open.

Gebruik maken van een S0 meter & Domoticz 5

De code is al wel wat aangepast.
De s0 (nr21) meter is verbonden op de GND (ground)

De s0 (nr20) meter is verbonden met pin D1,en daar zet je een weerstand tussen de 5v lijn en D1 is digitale input 1 (pin 12) van 10KΩ (10.000 OHM)
(zie onderstaande afbeelding)

Zoals je kunt zien kun je 2 tellers zo gebruiken en deze worden dan ook zo gelogd met teller 1 of teller 2 ( dit is het zelfde opgebouwd als hierboven aleen dan weerstand vanaf 5v lijn naar pin D3.


Nee deze werkt niet met de npn sensor.
Maar je zou deze kunnen proberen:
TZT TL-W5MC1  https://s.click.aliexpress.com/e/_DELCdTl
of
TCRT5000 Infrarood lijn detectie https://opencircuit.nl/product/tcrt5000-infrarood-lijn-detectie-module


Nee deze werkt niet met de npn sensor.
Maar je zou deze kunnen proberen:
TZT TL-W5MC1  https://s.click.aliexpress.com/e/_DELCdTl
of
TCRT5000 Infrarood lijn detectie https://opencircuit.nl/product/tcrt5000-infrarood-lijn-detectie-module

Gebruik maken van een S0 meter & Domoticz 6

Dit is via domoticz weer te activeren via hardware.
Als s0 counter usb

Gebruik maken van een S0 meter & Domoticz 7

En bij modus instellen stel je in hoeveel pulsen je vanaf je kwh meter (deze is geschikt tot 45A) krijgt.

Gebruik maken van een S0 meter & Domoticz 8

Ik heb hem op de 1e poort aangesloten en daar krijg ik 2000 pulsen per KW


Het aantal keren dat de pin HIGH is (puls) kun je tellen.
Vaak geeft de meter 1 puls per Wh.
Dus 1000 per kilowattuur.
Sommige meters hebben een ander aantal impulsen per kWh,
straks bij het instellen is dat belangrijk.
Mijn tussen meter geeft 2000 pulsen per kWh af.

Hier onder de code die ik zelf in een Arduino pro mini heb zitten en al meer dan een jaar online is zonder fouten.



Advertentie :


klik op download voor de ino file.

// This sketch is based on http://domoticz.com/forum/viewtopic.php?f=38&t=7300
// It will update counters in Domoticz.
// Via the serial port of the Pi you can set the initial counter values.
// do this while the Arduino is connected to the Pi but Domoticz is not running.
// Set the serial port to 9600 Baud.
// If not set, the counter will not start updating.
// Send the following command (with Newline ending):
// M[number of internal S0 counter]=[value in whole liters/Wh].
// M1=100000
// M2=100000
// KWH interrupt attached to IRQ 0 = pin2 (D2)
//KWH interrupt attached to IRQ 1 = pin3
// Start with M2, then M1. As soon as M1 !=0, the counter starts sending data.
//Number of pulses, used to measure energy.

volatile unsigned int pulseCount1 = 0;

volatile long pulseCount1_sinceStart = 0;

volatile unsigned int pulseCount2 = 0;

volatile long pulseCount2_sinceStart = 0;

volatile unsigned int reportInterval = 10000; //Interval between messages being sent out (in milliseconds)

int PulseCounterID = 001;

int PulseCounterVersion = 042;

String readString = String(100); //string for fetching data from address

int ind1 = 0;

int ind2 = 0;

String valueSet;

String valueSetID;

float lastTime = 0;

// The interrupt routine

void onPulse1()

{

//pulseCounter

pulseCount1++;

pulseCount1_sinceStart++;

//Blink built-in LED on S0-pulse

}

// The interrupt routine

//void onPulse2()

//{

//pulseCounter

//pulseCount2++;

//pulseCount2_sinceStart++;

//}

void setup()

{

// KWH interrupt attached to IRQ 0 = pin2 (D2)

attachInterrupt(0, onPulse1, FALLING);

//KWH interrupt attached to IRQ 1 = pin3

//attachInterrupt(1, onPulse2, FALLING);

Serial.begin(9600);

Serial.print(“/”);

Serial.print(PulseCounterID);

Serial.print(“:S0 Pulse Counter V”);

Serial.println(PulseCounterVersion);

}

void loop()

{

// decode the start values

// it looks for M1=123456

while (Serial.available() > 0) {

char c = Serial.read();

//read char by char

// it expects a maximum of 20 char

if (readString.length() < 20) {

//store characters to string

readString +=c;

Serial.println(c);

}

//if endline has been received

if (c == ‘n’) {

Serial.println(“endline”);

if(readString.indexOf(“M”) >=0){

ind1 = readString.indexOf(‘M’);

valueSetID = readString.substring(ind1+1, ind1+2);

ind2 = readString.indexOf(‘=’);

valueSet = readString.substring(ind2+1);

if (valueSetID.toInt() == 1){

pulseCount1_sinceStart = valueSet.toFloat();

} else if (valueSetID.toInt() == 2){

pulseCount2_sinceStart = valueSet.toFloat();

} else {return;}

} // end readString M

readString = “”;

} // end endline

} // end serial available

// send the data every reportInterval

if(millis() – lastTime > reportInterval) {

lastTime = millis();

// Only send the counter data if the initial pulse count is not zero

if (pulseCount1_sinceStart != 0){

Serial.print(“ID:”);

Serial.print(PulseCounterID);

Serial.print(“:I:10:M1:”);

Serial.print(pulseCount1);

Serial.print(“:”);

Serial.print(pulseCount1_sinceStart);

Serial.print(“:”);

Serial.print(“M2”);

Serial.print(“:”);

Serial.print(pulseCount2);

Serial.print(“:”);

Serial.println(pulseCount2_sinceStart);

pulseCount1 = 0;

pulseCount2 = 0;

} // end if not zero

} // end interval loop

} // end void loop()



Spelfouten, taalfouten of inhoudelijke fouten ontdekt?
Stuur dan een mailtje naar de auteur van dit artikel!

Tevreden met deze website?

Wat vond je van deze post?

Klik op een ster om deze te beoordelen!

Gemiddelde score 0 / 5. Aantal stemmen: 0

Tot nu toe geen stemmen! Wees de eerste die dit bericht beoordeelt.

13 gedachten over “Gebruik maken van een S0 meter & Domoticz”

  1. blank

    Hoi,
    Ik heb de s0tool geladen in een wemos D1. Dit lijkt allemaal prima gegaan (ik kan de tool bereiken via de webbrowser).
    Kan ik de s0tool ook aan domoticz koppelen via wifi (liefst mqtt)?
    Groet Jeroen

  2. blank

    Ik hebv een LED lichtimplus ipv S0, en ik wil ook een pulse uitlezer voor de watermeter, ik denk aan een hall effect sensor met magneet boven de wijzer te monteren, hopelijk kan het klepje dan nog dicht. Vraag 1: S0 of licht puls, maak niet uit toch? Vraag 2: Is een Arduino Uno geschikt om twee pulse counters tegelijkertijd bij te houden en door geven aan Domoticz?

    1. blank

      Hallo GertJan,

      Bedankt voor je reactie.

      Vraag 1: dat zou ook mogelijk moeten zijn.
      Vraag 2: Arduino Uno zou ook zeker geschikt zijn om 2 tegelijkertijd te meten. Daarvoor zal je de code natuurlijk wel moeten aanpassen, draai zelf geen domoticz meer dus kan het niet meer testen.

      Wobbe

      1. blank

        Hallo Wobbe, bedankt voor je reactie en alle informatie die je hebt gedeeld.Inmiddels heb ik de Arduino code draaien op een Uno na de tips van bstrkr verder in dit forum. De tweede counter blijkt al in de code te zijn opgenomen, maar moest alleen op paar regels worden uitgecommentarisseerd. Ik heb een phototransistor op de interrupt ingangen aangesloten en counters getest door een rode led 2x per seconde te laten flitsen. Dat werkt. Nu nog mijn watermeter.

  3. blank

    Als ik de meterstanden wil opslaan op een SD kaart, hoe kan ik de code dan aanpassen om dit via de shield naar de SD kaart op te slaan?

  4. blank

    Als je de data op een sd kaart wilt opslaan, hoe pas je de code dan aan zodat dit juist wordt opgeslagen?

  5. blank

    Dank! zelfs eind 2022 nog actueel voor mij 😉
    Wilde een LJ12A3-4-Z/BX mbv een 12v relais aan een Arduino Uno koppelen en naar Domoticz laten pushen – Gelukt! (ben wat huiverig voor die EPS32 dingtjes in de WIFI; dan liever maar iets via USB, vandaar de UNO die ik nog had liggen)
    Voor anderen die het willen uploaden op een Arduino UNO en net als ik tegen problemen aanlopen: open het script in een editor en vervang alle aanhalings tekens (dubbele en enkele) met hun ‘gewone’ versie op uw toetsenbord, vervang “&lt” (line112) met een “<” en de “if (c == ‘n’)” (line124) met if (c == ‘n’). vervang daarnaast de – (line158) met de – op uw toetsenbord.

  6. blank
    HR Oosterhuis

    goedenavond, ik krijg de S0 meting wel aan de opbrengst kant, maar aan de verbruikerskant krijg ik geen metingen, werkt een 3 fasen kwh meter met S0 op dezelfde manier als een 1 fase kwh meter? Ik heb de eastron sdm72d. Verder gebruik ik de script van SolarMeter van Harold

  7. blank

    Ik heb ook dit script geprobeerd op een arduino uno.
    Maar krijg ook allemaal foutmeldingen.

    s0counter:185:17: error: expected primary-expression before ‘:’ token

     Serial.print(“:”);

             ^

    s0counter:189:17: error: expected primary-expression before ‘:’ token

     Serial.print(“:”);

             ^

    exit status 1
    stray ‘\342’ in program

  8. blank

    Ik probeer deze sketch te uploaden maar krijg foutmeldingen tijdens het verifieren.
    /stray in programma. Kun je me vertellen wat er fout gaat?

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Winkelwagen