Ladezeit von Akku ermitteln u. Steckdose entsprechend schalten

Begonnen von THZ_Haus, 17 August 2019, 13:50:06

Vorheriges Thema - Nächstes Thema

THZ_Haus

Hallo,
für mein RC-Car Hobby müssen 7,2V Nimh Akku Packs geladen werden.
Diese Akku Packs haben unterschiedliche "Kapaziäten" und somit dann auch andere "Ladezeiten".

Im Internet gibt es dazu eine "Formel":https://www.akkuladezeit.de/

Kann diese Formel in FHEM implementiert werden?

Die idee wäre, zwei Eingabefeler (Kapatität des Akkus und Ladestrom), dann ermittelt FHEM anhand der Formel die optimale Ladezeit.
Als Aktor, würde ich eine "Osram Lightify Steckdose" nutzen und diese über einen "Weekday-Timer" schalten?
Dabei würde der "Weekday Timer" seine werte aus dem Ergebniss der Formel bekommen.

Wer kann helfen?



Solarview mit SAM BT, FHEM mit THZ 403 SOL, EDIMAX

PeMue

Hallo,

Zitat von: THZ_Haus am 17 August 2019, 13:50:06
Die idee wäre, zwei Eingabefeler (Kapatität des Akkus und Ladestrom), dann ermittelt FHEM anhand der Formel die optimale Ladezeit.
wie würdest Du dann den Ladestrom einstellen? Die Steckdose kann doch nur an bzw. aus? Oder sucht sich das Ladegerät den Strom selber aus?

Gruß Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

THZ_Haus

Hallo, an der Schaltsteckdose würde ein "Ladegerät mit konstantem ladestrom" verbaut.
In FHEM ein "Timer", der die Steckdose nach Ablauf der ladezeit "abschaltet".



b_Laden {
  my $temp=Value("Akku_Kapa")/Value("Lade_Kapa")*1.3*3600;
  $temp = sprintf "+%02d:%02d:%02d", (gmtime($temp))[2,1,0];
  fhem("set Akku_Ladezeit_h $temp");
}


Bei dieser Methode wird eine variable im "Time" Format erzeugt.

Problem ist jetzt, wenn die Ladezeit > 24h ist, dann fängt das Zeitformat wieder bei 00:00:01 an.
Somit muss es die Möglichkeit geben, das "Time" Signal an einen "Weekday" Timer zu übergeben.

Solarview mit SAM BT, FHEM mit THZ 403 SOL, EDIMAX

KölnSolar

RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

THZ_Haus

der Timer startet nicht?
b_Laden_starten.on{ my $hm = Value("Akku_Ladezeit_sec");;fhem( "set LIGHTIFY19A6B100AA3EB07C on-for-timer ".$hm ) }
Solarview mit SAM BT, FHEM mit THZ 403 SOL, EDIMAX

Byte09

#5
Zitat von: THZ_Haus am 17 August 2019, 13:50:06
Hallo,
für mein RC-Car Hobby müssen 7,2V Nimh Akku Packs geladen werden.
Diese Akku Packs haben unterschiedliche "Kapaziäten" und somit dann auch andere "Ladezeiten".

Im Internet gibt es dazu eine "Formel":https://www.akkuladezeit.de/

Kann diese Formel in FHEM implementiert werden?

Die idee wäre, zwei Eingabefeler (Kapatität des Akkus und Ladestrom), dann ermittelt FHEM anhand der Formel die optimale Ladezeit.
Als Aktor, würde ich eine "Osram Lightify Steckdose" nutzen und diese über einen "Weekday-Timer" schalten?
Dabei würde der "Weekday Timer" seine werte aus dem Ergebniss der Formel bekommen.

Wer kann helfen?

guten morgen ,

ich habe dir mal ein entsprechendes MSwitch gebaut.
nach dem einspielen der rawdefinition müsstest du nur die schaltbefehle der steckdose ändern - ist im device entsprechend kommentiert.

ladestrom: set Akkulader Ladestrom XXX
kapazität: set Akkulader Akkukapazitaet XXX

der rest sollte dann berechnet werden - Ladevorgang starten drücken - fertig.

Wenn du eine überschaubare Anzahl von Akkutypen/Ladeströmen hast könnte man das ganze noch mit entsprechenden Dropdownlisten als 'Presets' erweitern, du kannst dich bei Interesse gerne melden.

Eingabefelder im Webinterface in diesem Sinn sind nicht möglich da in fhem schlicht nicht vorgesehen . Ähnliches lässt sich bei Bedarf nur über vorbelegte Dropdownlisten, Slider etc. realisieren .

gruss Byte09

edit: optional liesse es sich noch so umbauen , dass es mit Parameterübergabe gestartet werden kann ( set Akkulader on <kapazität> <ladestrom>

-------------

Bitte KEINE Änderungen an der Rawdefinition vornehmen.
Das Device wird im Raum '05_test' unter dem Namen 'Akkulader' angelegt.

defmod Akkulader MSwitch Akkulader    # FreeCmd MSwitch_Self
attr Akkulader MSwitch_Comments 1
attr Akkulader MSwitch_Debug 0
attr Akkulader MSwitch_Delete_Delays 1
attr Akkulader MSwitch_Event_Id_Distributor Ladestrom:.*=>cmd1 ID 1\
Akkukapazitaet:.*=>cmd1 ID 1\

attr Akkulader MSwitch_Expert 1
attr Akkulader MSwitch_Extensions 0
attr Akkulader MSwitch_Help 0
attr Akkulader MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Akkulader MSwitch_Include_Devicecmds 1
attr Akkulader MSwitch_Include_MSwitchcmds 0
attr Akkulader MSwitch_Include_Webcmds 0
attr Akkulader MSwitch_Inforoom MSwitch
attr Akkulader MSwitch_Lock_Quickedit 1
attr Akkulader MSwitch_Mode Full
attr Akkulader MSwitch_Safemode 1
attr Akkulader eventMap /on:Ladevorgang starten/off:Ladevorgang stoppen/
attr Akkulader readingList Ladestrom Akkukapazitaet Ladezeit
attr Akkulader room 05_test
attr Akkulader setList Ladestrom Akkukapazitaet Ladezeit:noArg
attr Akkulader stateFormat state\
Akkukapazitaet\
Ladestrom\
Ladezeit
attr Akkulader webCmd Ladevorgang starten:Ladevorgang stoppen

setstate Akkulader Ladevorgang stoppen\
10\
3000\
00:00:15
setstate Akkulader 2019-08-18 08:23:06 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2,MSwitch_Self-AbsCmd1
setstate Akkulader 2019-08-18 08:33:53 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]{#[nl]my#[sp]$kap#[sp]=#[sp]ReadingsVal(#[sp]'Akkulader'#[ko]#[sp]'Akkukapazitaet'#[ko]0)#[se]#[nl]my#[sp]$strom#[sp]=#[sp]ReadingsVal(#[sp]'Akkulader'#[ko]#[sp]'Ladestrom'#[ko]0)#[se]#[nl]my#[sp]$temp=$kap/$strom*1.3*3600#[se]#[nl]$temp#[sp]=#[sp]sprintf#[sp]"%02d#[dp]%02d#[dp]%02d"#[ko]#[sp](gmtime($temp))[2#[ko]1#[ko]0]#[se]#[nl]fhem("set#[sp]Akkulader#[sp]Ladezeit#[sp]$temp")#[se]#[nl]#[nl]}#[nl]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]1#[NF]Keine#[sp]Aenderung#[sp]vornehmen#[sp]beinhaltet#[sp]-#[sp]die#[sp]formel#[sp]zur#[sp]Ladezeitberechnung#[NF]0#[NF]0#[NF]3#[ND]FreeCmd-AbsCmd2#[NF]cmd#[NF]cmd#[NF]set#[sp]stecker#[sp]on#[se]#[NF]set#[sp]stecker#[sp]off#[se]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]Hier#[sp]bitte#[sp]den#[sp]auszufuehrenden#[sp]Befehl#[sp]zum#[sp]schalten#[sp]der#[sp]steckdose#[sp]an#[sp]aus#[sp]angeben#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd1#[NF]off#[NF]no_action#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF][$SELF#[dp]Ladezeit]#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]Keine#[sp]Aenderung#[sp]vornehmen#[sp]-#[sp]schaltet#[sp]das#[sp]Mswitch#[sp]und#[sp]die#[sp]Steckdose#[sp]nach#[sp]erreichen#[sp]der#[sp]Ladezeit#[sp]aus#[sp]#[NF]0#[NF]0#[NF]2
setstate Akkulader 2019-08-18 08:38:24 .Device_Events (Akkukapazitaet|Ladestrom):.*#[tr]no_trigger
setstate Akkulader 2019-08-18 07:21:53 .First_init done
setstate Akkulader 2019-08-18 08:38:23 .Trigger_cmd_off no_trigger
setstate Akkulader 2019-08-18 08:38:23 .Trigger_cmd_on (Akkukapazitaet|Ladestrom):.*
setstate Akkulader 2019-08-18 07:26:04 .Trigger_condition
setstate Akkulader 2019-08-18 08:38:23 .Trigger_off no_trigger
setstate Akkulader 2019-08-18 08:38:23 .Trigger_on no_trigger
setstate Akkulader 2019-08-18 07:26:04 .Trigger_time
setstate Akkulader 2019-08-18 07:21:53 .V_Check V2.00
setstate Akkulader 2019-08-18 08:15:36 .sortby show
setstate Akkulader 2019-08-18 08:35:23 Akkukapazitaet 10
setstate Akkulader 2019-08-18 08:38:45 EVENT last_activation_by:event
setstate Akkulader 2019-08-18 08:38:45 EVTFULL Akkulader:last_activation_by:event
setstate Akkulader 2019-08-18 08:38:45 EVTPART1 Akkulader
setstate Akkulader 2019-08-18 08:38:45 EVTPART2 last_activation_by
setstate Akkulader 2019-08-18 08:38:45 EVTPART3 event
setstate Akkulader 2019-08-18 08:34:12 Ladestrom 3000
setstate Akkulader 2019-08-18 08:35:23 Ladezeit 00:00:15
setstate Akkulader 2019-08-18 08:00:34 Trigger_device MSwitch_Self
setstate Akkulader 2019-08-18 08:38:23 Trigger_log off
setstate Akkulader 2019-08-18 08:38:45 last_activation_by event
setstate Akkulader 2019-08-18 08:38:45 last_cmd 1
setstate Akkulader 2019-08-18 08:38:45 last_event last_activation_by:event
setstate Akkulader 2019-08-18 08:38:45 last_exec_cmd set Akkulader off
setstate Akkulader 2019-08-18 08:38:45 state off



Device Support Info:
ZitatModulversion: 2.40
Datenstruktur: V2.00

----- Devicename -----
Akkulader

----- Attribute -----
Attribut room: 05_test
Attribut MSwitch_Event_Id_Distributor: Ladestrom:.*=>cmd1 ID 1
Akkukapazitaet:.*=>cmd1 ID 1

Attribut MSwitch_Include_Devicecmds: 1
Attribut MSwitch_Lock_Quickedit: 1
Attribut eventMap: /on:Ladevorgang starten/off:Ladevorgang stoppen/
Attribut webCmd: Ladevorgang starten:Ladevorgang stoppen
Attribut readingList: Ladestrom Akkukapazitaet Ladezeit
Attribut MSwitch_Extensions: 0
Attribut MSwitch_Comments: 1
Attribut MSwitch_Mode: Full
Attribut MSwitch_Safemode: 1
Attribut MSwitch_Include_Webcmds: 0
Attribut setList: Ladestrom Akkukapazitaet Ladezeit:noArg
Attribut stateFormat: state
Akkukapazitaet
Ladestrom
Ladezeit
Attribut MSwitch_Expert: 1
Attribut MSwitch_Debug: 0
Attribut MSwitch_Ignore_Types: notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
Attribut MSwitch_Include_MSwitchcmds: 0
Attribut MSwitch_Help: 0
Attribut MSwitch_Delete_Delays: 1
Attribut MSwitch_Inforoom: MSwitch

----- Trigger -----
Trigger device:  MSwitch_Self
Trigger time:
Trigger condition:
Trigger Device Global Whitelist: undef

----- Trigger Details -----
Trigger cmd1: no_trigger
Trigger cmd2: no_trigger
Trigger cmd3: (Akkukapazitaet|Ladestrom):.*
Trigger cmd4: no_trigger

----- Device Actions -----

Device: FreeCmd-AbsCmd1
cmd1: cmd {
my $kap = ReadingsVal( 'Akkulader', 'Akkukapazitaet',0);
my $strom = ReadingsVal( 'Akkulader', 'Ladestrom',0);
my $temp=$kap/$strom*1.3*3600;
$temp = sprintf "%02d:%02d:%02d", (gmtime($temp))[2,1,0];
fhem("set Akkulader Ladezeit $temp");

}

cmd2: cmd
cmd1 condition:
cmd2 condition:
cmd1 delay: 00:00:00
cmd2 delay: 00:00:00
repeats: 0
repeats delay: 0
priority: 1
id: 1
comment: Keine Aenderung vornehmen beinhaltet - die formel zur Ladezeitberechnung
cmd1 exit: 0
cmd2 exit: 0

Device: FreeCmd-AbsCmd2
cmd1: cmd set stecker on;
cmd2: cmd set stecker off;
cmd1 condition:
cmd2 condition:
cmd1 delay: 00:00:00
cmd2 delay: 00:00:00
repeats: 0
repeats delay: 0
priority: 1
id: 0
comment: Hier bitte den auszufuehrenden Befehl zum schalten der steckdose an aus angeben
cmd1 exit: 0
cmd2 exit: 0

Device: MSwitch_Self-AbsCmd1
cmd1: off
cmd2: no_action
cmd1 condition:
cmd2 condition:
cmd1 delay: [$SELF:Ladezeit]
cmd2 delay: 00:00:00
repeats: 0
repeats delay: 0
priority: 1
id: 0
comment: Keine Aenderung vornehmen - schaltet das Mswitch und die Steckdose nach erreichen der Ladezeit aus
cmd1 exit: 0
cmd2 exit: 0

THZ_Haus

Hallo,
supi habs gerade mal eingebaut. Klapt soweit!
DANKE!

Problem, bei kleinen Ladeströmen z.B. 150 mA ist die Ladezeit eine 3000 mAh Akku > 24h.
Da wird dann etwas falsch gerechnet.

Solarview mit SAM BT, FHEM mit THZ 403 SOL, EDIMAX

hubiuwe

Pass auf!
Ein Ladegerät das am Akku angeschlossen bleibt und vom Netz getrennt wird entlädt den Akku langsam wieder durch die interne Messschaltung.

Du solltest lieber ein gutes RC-Ladegereät nutzen welches von alleine sicher abschaltet.
Akkus laden wir sowieso nicht Unbeaufsichtigt.

Viele RC-Ladegeräte haben eine PC-Schnittstelle für das Logging und zur Steuerung, darüber könnte FHEM ein Befehl gesendet werden "Laden fertig" und abschalten.

Gruß Uwe (auch RC-Flieger)
Die beste Automatik ist die, die man abschalten kann!