Domoticz script auto laden daluren + zonnestroom

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • DropjesLover
  • Registratie: November 2004
  • Nu online
Ik heb het in het Domoticz topic gepost, maar een apart topic is beter.

Ik heb minimale programmeer ervaing, maar weet wel een beetje wat een if then else looptje is..

Wat ik heb:
RPi met Domoticz met een P1 uitlezing
RFLink


We hebben een PHEV auto, accu ~13kWh, op onze oprit. Deze laden we nu met handmatig de granny charger in te steken.
De auto accepteert het om de laad-stekker op de auto al in te steken, maar bijv. 15 uur later de lader in het stopcontact te doen.

We hebben zonnepanelen en een 3-fase omvormer.
We gaan met de fiets naar werk, de auto staat dus overdag veel voor de deur.

Met een Klik-Aan-Klik-Uit stopcontact stekker heb ik een uurtje de wagen geladen en de temperatuur gecontroleerd (IR thermometer). De stekker ging van ~15°C (koude garage) naar ~28°C, en dat bleef constant.

Ik wil de auto laden wanneer:
  • Tussen 23:00 en 06:00; daluren stroom (tussen 00:01 - 06:00 mag ook als dat handiger programmeren is)
  • De teruglevering op 1 fase meer dan 200W is (x3 = 600W, dus een zonnige dag = goedkope stroom).
Wanneer de teruglevering minder dan 100W is (einde dag) moet de stekker weer uit.

Ik heb de ballen verstand van programmeren, maar logica ken ik wel, dus wat geknutseld in in Blockly.
Eerst wat getest met de stekker en een lamp hoe een if-else block werkt met tijden ingeven (if tijd > 21:00 lamp uit, if tijd < 21:00 lamp aan, etc), dit werkt.

Geknutsel is tussen 21:00 en 23:00 geweest, testen door even de waardes 2 minuten later dan huidige tijd te zetten.

Maar deze werken allemaal toch niet.
Afbeeldingslocatie: https://tweakers.net/i/V44ScdZQ_kBDGHPjfnf4sr0Akog=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/F7swD4lb3e5Tu522vwy03AYd.png?f=user_large
M'n lampje blijft uit, ook 1s nadat ik hem handmatig aangezet heb in Domoticz -O-

Afbeeldingslocatie: https://tweakers.net/i/7HdFtcfff6E3btfsFlL4oxT1u04=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/aSpSm2fAIaY36Mapoj5pVo48.png?f=user_large
Dit werkt ook niet, al zet de lamp zichzelf niet meer uit :/

Afbeeldingslocatie: https://tweakers.net/i/V44ScdZQ_kBDGHPjfnf4sr0Akog=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/F7swD4lb3e5Tu522vwy03AYd.png?f=user_large

Het lijkt mis te gaan bij de tweede Else-If


Weer terug naar de basis, ook dit werkt niet :?
Afbeeldingslocatie: https://tweakers.net/i/gRejb-UoFuFhJ3PimPu2JPlmG2I=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/N5fkinDmtVopHm1zk8lMGBXf.png?f=user_large

Hoe krijg ik dit wel werkend?
Andere talen zijn mij (nu) te complex als niet-programmeur zijnde, hoe je de juiste syntax opbouwt en welke commando's / variabelen je aan kan roepen / definieert, wanneer je een al bestaande input moet gebruiken. Alles is makkelijker wanneer je het al zelf definieert in basis, maar dat kan dus niet.

BThGvNeOA
Bond Tegen het Gebruik van Nutteloze en Onbekende Afkortingen!
Gewoon uitschrijven wat je bedoelt is zo moeilijk niet... PR (persoonlijk record?), ICE/M/A (verbrandingsmotor?), kdv (kinderdagverblijf), DA (dierenarts?)etc...,

Alle reacties


Acties:
  • +2 Henk 'm!

  • JaVaWa
  • Registratie: Januari 2003
  • Laatst online: 16:25
Met de code:
code:
1
Time > 21:00 and Time < 6:00

zal die nooit aangaan... met deze wel:
code:
1
Time > 21:00 or Time < 6:00


Het kan nooit later dan 9 uur 's avonds zijn en tegelijk vroeger zijn dan 6 uur 's ochtends. Ja, wel als je uitgaat van 6 uur de volgende dag, maar dat weet de code niet. Daarom later dan 21:00 óf vroeger dan 6:00.

Mijn GPS-collectie


Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 07:05

remco_k

een cassettebandje was genoeg

Je gebruikt 3 keer eenzelfde constructie en zelfde fout:
code:
1
if time>21 and time<6

(Versimpeld om het duidelijker te maken)
Deze 2 vergelijkingen zullen nooit beide gelijkertijd naar 'true' evalueren, slechts max één van twee is true. Dus kom je nooit in dat if block.
Zie tijd even als een nummer. Is 22 dan groter dan 21 en kleiner dan 6? Nee.
Aangezien je delivery 0 zal zijn rond dit tijdstip, zal dat verklaren waarom in geval 1 je lampje uit ging. In geval 2 zit een 2e en eenzelfde soort tijd vergelijkings fout (time<21 and time>6) welke nooit beide true zijn. Dus daarom ging je lampje nu niet uit.

Als je er een or van maakt, gaat het meer de goede kant op:
code:
1
if time>21 or time<6

Dit is niet perse de beste manier om tijdgestuurd dingen te doen, maar in dit geval werkt het wel.


Verder zitten er wat haken en ogen aan je voorwaarden. Als je in wilt schakelen bij een teruglevering van 200W, en het laden van je auto verbruikt meer dan 200W (en dat doet ie), dan schakelt je script meteen het laden weer uit omdat de delivery 0W is geworden. Vervolgens heb j daarna ineens weer teruglevering van 200W, schakelt het laden weer in. Dit blijft zo constant klapperen. Dat moet je niet willen. Je moet hier andere voorwaarden voor bepalen. Namelijk: pas inschakelen als teruglevering groter is (met een beetje marge) dan de laadstroom en uit schakelen als de teruglevering tijdens laden ingeschakeld (!) op 0 komt.

Waarom je onderste script het niet deed kan ik je niet vertellen, wellicht was er iets anders aan de hand. Check in zulke gevallen altijd de Domoticz logs.

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • DropjesLover
  • Registratie: November 2004
  • Nu online
remco_k schreef op maandag 24 maart 2025 @ 00:33:
Je gebruikt 3 keer eenzelfde constructie en zelfde fout:
code:
1
if time>21 and time<6

(Versimpeld om het duidelijker te maken)
Deze 2 vergelijkingen zullen nooit beide gelijkertijd naar 'true' evalueren, slechts max één van twee is true. Dus kom je nooit in dat if block.
Zie tijd even als een nummer. Is 22 dan groter dan 21 en kleiner dan 6? Nee.
Aangezien je delivery 0 zal zijn rond dit tijdstip, zal dat verklaren waarom in geval 1 je lampje uit ging. In geval 2 zit een 2e en eenzelfde soort tijd vergelijkings fout (time<21 and time>6) welke nooit beide true zijn. Dus daarom ging je lampje nu niet uit.

Als je er een or van maakt, gaat het meer de goede kant op:
code:
1
if time>21 or time<6

Dit is niet perse de beste manier om tijdgestuurd dingen te doen, maar in dit geval werkt het wel.


Verder zitten er wat haken en ogen aan je voorwaarden. Als je in wilt schakelen bij een teruglevering van 200W, en het laden van je auto verbruikt meer dan 200W (en dat doet ie), dan schakelt je script meteen het laden weer uit omdat de delivery 0W is geworden. Vervolgens heb j daarna ineens weer teruglevering van 200W, schakelt het laden weer in. Dit blijft zo constant klapperen. Dat moet je niet willen. Je moet hier andere voorwaarden voor bepalen. Namelijk: pas inschakelen als teruglevering groter is (met een beetje marge) dan de laadstroom en uit schakelen als de teruglevering tijdens laden ingeschakeld (!) op 0 komt.

Waarom je onderste script het niet deed kan ik je niet vertellen, wellicht was er iets anders aan de hand. Check in zulke gevallen altijd de Domoticz logs.
Ook met OR werkt het niet. Lampje gaat wel aan, maar niet uit.

Terechte opmerking over het mogelijk klapperen. Dat ondervang ik door het script te laten kijken naar fase 1 terwijl de auto op fase 3 zit.
Domoticz blijft immers zien dat er 1500W verbruikt wordt én dat er 200W teruggeleverd wordt.

BThGvNeOA
Bond Tegen het Gebruik van Nutteloze en Onbekende Afkortingen!
Gewoon uitschrijven wat je bedoelt is zo moeilijk niet... PR (persoonlijk record?), ICE/M/A (verbrandingsmotor?), kdv (kinderdagverblijf), DA (dierenarts?)etc...,


Acties:
  • 0 Henk 'm!

  • DropjesLover
  • Registratie: November 2004
  • Nu online
Commentaren van hierboven verwerkt.

Deze werkt helaas ook niet goed
Afbeeldingslocatie: https://tweakers.net/i/dg4AChKkBRGN255NASVpRiBkKis=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/uLc4sSBcyBm7g1PVDzPtDuXP.png?f=user_large

Met de voorwaarden wat beter gecombineerd om een if-else loopje minder te hebben:
Afbeeldingslocatie: https://tweakers.net/i/K6zUJ3dOs2eR-3g6CdqDPtoMMI8=/800x/filters:strip_exif()/f/image/Nk8BuXQOClECj1aQHn8p8GXW.png?f=fotoalbum_large
Maar dit is aan het klapperen bij test-tijd 18:00-07:00, op het hele minuut gaat de lamp aan, en een tel later weer uit. Terwijl ik nu geen teruglevering heb.

Nu las ik da tBlockly geen geneste if-statements kan gebruiken, maar je dus meerdere else-if moet gebruiken.
Afbeeldingslocatie: https://tweakers.net/i/kJ29Wg_gKzkg805p_8gN1ZzRXjM=/800x/filters:strip_exif()/f/image/RebVhSoQ7VHpLmAND7TwZPZx.png?f=fotoalbum_large
Maar deze laat op dit moment (19:20, 0 teruglevering) ook niet mijn lampje branden -O-

BThGvNeOA
Bond Tegen het Gebruik van Nutteloze en Onbekende Afkortingen!
Gewoon uitschrijven wat je bedoelt is zo moeilijk niet... PR (persoonlijk record?), ICE/M/A (verbrandingsmotor?), kdv (kinderdagverblijf), DA (dierenarts?)etc...,


Acties:
  • 0 Henk 'm!

  • JaVaWa
  • Registratie: Januari 2003
  • Laatst online: 16:25
"Time > 7:01 or Time < 18:00" is altijd waar... Bij "Time > 7:01 and Time < 18:00" is het alleen tussen die tijdstippen waar.
Los daarvan lijkt het script niet te doen wat die zou moeten doen, ook met de verkeerde tijdroutine. Kun je de vertaling van het Blocky script naar gewoon Javascript ergens terugvinden?

N.B. kijk ook even waarmee precies gerekend wordt bij de tijdstippen, UTC of MET (zometeen MEZT).

Mijn GPS-collectie


Acties:
  • 0 Henk 'm!

  • remco_k
  • Registratie: April 2002
  • Laatst online: 07:05

remco_k

een cassettebandje was genoeg

DropjesLover schreef op zaterdag 29 maart 2025 @ 19:20:
Maar deze laat op dit moment (19:20, 0 teruglevering) ook niet mijn lampje branden -O-
Als bij programmeren dingen niet lukken en het is niet duidelijk waarom niet én je komt er niet uit, vervang je output (lampje aan/lampje uit) eens voor een Write to log item en schrijf per item een unieke tekst in de Domoticz logs. Vervolgens kan je in de logs daadwerkelijk zien waar je allemaal wel en niet komt. Dat geeft je wellicht nieuwe info en voorkomt mogelijk verwarring omdat misschien de switch van je lampje niet goed werkt ofzo.

Alles kan stuk.


Acties:
  • 0 Henk 'm!

  • Hetisweergezell
  • Registratie: November 2013
  • Laatst online: 16:04
Verder kun je ook nog 'klapperen' hebben omdat de actual delivery niet altijd heel stabiel is. Even een wolk voor de zon en vooral in deze tijden schiet de opbrengst naar beneden om daarna weer snel op te veren. Dus misschien ook een idee om te kijken of je het iets minder gevoelig maakt (gemiddelde over de laatste zoveel minuten nemen o.i.d.).

Acties:
  • 0 Henk 'm!

  • DropjesLover
  • Registratie: November 2004
  • Nu online
Hetisweergezell schreef op vrijdag 4 april 2025 @ 11:59:
Verder kun je ook nog 'klapperen' hebben omdat de actual delivery niet altijd heel stabiel is. Even een wolk voor de zon en vooral in deze tijden schiet de opbrengst naar beneden om daarna weer snel op te veren. Dus misschien ook een idee om te kijken of je het iets minder gevoelig maakt (gemiddelde over de laatste zoveel minuten nemen o.i.d.).
Daarom laat ik hem opstarten bij 200W op 1 fase (dus ~600W totaal), maar afschakelen bij 100W (300W totaal). Op een beetje zonnige dag levert mijn PV systeem 1000 - 2500W, dus dat zit ruime marge in.
Het gaat mij om bij het inschakelen wanneer heel Nederland (goedkope) zonnestroom begint te leveren.

Voor nu wil ik de regeling simpel houden.
Later kan ik hem aanpassen / uitbreiden met bijv. in/uitschakelen voor minimaal 30 minuten.

BThGvNeOA
Bond Tegen het Gebruik van Nutteloze en Onbekende Afkortingen!
Gewoon uitschrijven wat je bedoelt is zo moeilijk niet... PR (persoonlijk record?), ICE/M/A (verbrandingsmotor?), kdv (kinderdagverblijf), DA (dierenarts?)etc...,


Acties:
  • +2 Henk 'm!

  • DropjesLover
  • Registratie: November 2004
  • Nu online
Kleine update, dit werkt *O*

Afbeeldingslocatie: https://tweakers.net/i/JHYsaGEaS1dF15TYo7u_qLVzsDU=/800x/filters:strip_exif()/f/image/VFlQdV5nM2i22C1DZ4SQkEYv.png?f=fotoalbum_large
Getest met een tijd van < 23:00 ('s avonds), lamp blijft consequent aan.
Nu met >300W op de teruglevering gaat de lamp aan.
Dus nu ook de auto ingeprikt (fase 3) en wat verbruik op fase 1 blijft de lamp ook aan.

Afbeeldingslocatie: https://tweakers.net/i/1VUi7_I2UI7j9jXwUyxwosD8klw=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/D4owFQM2GxE6bVsgjHZd31ep.png?f=user_large

Afbeeldingslocatie: https://tweakers.net/i/_SG6_B8DfoLGCja2p1ZM8iDq3hg=/800x/filters:strip_exif()/f/image/16QLGeA8ni6RTiFs9XxiCM6T.png?f=fotoalbum_large

BThGvNeOA
Bond Tegen het Gebruik van Nutteloze en Onbekende Afkortingen!
Gewoon uitschrijven wat je bedoelt is zo moeilijk niet... PR (persoonlijk record?), ICE/M/A (verbrandingsmotor?), kdv (kinderdagverblijf), DA (dierenarts?)etc...,

Pagina: 1