Open elmarfaber opened 3 years ago
Hallo Elmar,
zeitlich ist meinerseits nicht absehbar, wann und ob ich das noch einbaue.
Evtl. bekommst du es selbst hin? Beim HB-ES-PMSw1-USB habe ich den INA219 eingebaut: https://github.com/jp112sdl/HB-ES-PMSw1-USB/blob/master/HB-ES-PMSw1-USB.ino
Hallo Jérôme,
ich bin zwar nicht so ganz unerfahren im programmieren aber ich glaube nicht, dass ich das hinbekomme ohne mehr über die Grundstruktur von AskSin++ zu wissen - ist schon sehr komplex. Aber ich versuche mich mal daran...
ohne mehr über die Grundstruktur von AskSin++ zu wissen
Da musst du auch gar nicht ran.
Ich hab das mal grob in den Sketch gepackt. https://github.com/jp112sdl/HB-UNI-Sen-CURRENT/blob/dev/ina219/HB-UNI-Sen-CURRENT.ino
Die Änderungen sind überschaubar: https://github.com/jp112sdl/HB-UNI-Sen-CURRENT/compare/dev/ina219
Überall dort, wo was mit dem ADS1115 gemacht wird, musst dafür der INA219 werkeln.
NUM_CHANNELS solltest du noch auf 1 setzen https://github.com/jp112sdl/HB-UNI-Sen-CURRENT/blob/2ed1deb66944ee0305fe46d08b8e331339dcb3b2/HB-UNI-Sen-CURRENT.ino#L41
Okay, das ist wirklich nicht wild, hab den Sketch nun angepasst und muss jetzt nur noch die Hardware zusammenbauen und es testen. Habe den INA226 mal mit dazu gepackt und die xml Datei um den Parameter erweitert: ...
<paramset type="MASTER" id="HB-UNI-Sen-CURRENT_ch_master">
<parameter id="SENSOR_TYPE">
<logical type="option">
<option id="SCT-013-015" />
<option id="SCT-013-020" />
<option id="SCT-013-030" default="true" />
<option id="SCT-013-050" />
<option id="SCT-013-100" />
<option id="INA219" />
<option id="INA226" />
<option id="ACS712 or other" />
</logical>
<physical type="integer" interface="config" list="1" index="3" size="1"/>
</parameter>
```...
Ich hoffe, ich habe alles richtig gemacht. Ich melde mich, wenn ich es getestet habe...
Vielen Dank für deine Hilfe!!!!
die xml Datei um den Parameter erweitert
Hi,
das reicht nicht. Die WebUI Config Page hat die Liste auch noch hier: https://github.com/jp112sdl/JP-HB-Devices-addon/blob/master/src/addon/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl#L115-L123
Hallo,
also kompilieren und aufspielen ist kein Problem, aber die Auswahlliste auf dem RasberryMatic verändert sich nicht. ich sehe schon den Auswahlpunkt INA219 nicht... Jetzt bräuchte ich doch noch ein wenig Hilfe... Die xml-Datei habe ich in den Ordner /usr/local/addons/jp-hb-devices-addon/customized_firmware kopiert
Da ist ja ein Fehler in meiner Aufzählung 😎 Hab ich noch gar nicht mitbekommen. Es muss hier natürlich
set options(5) "INA219"
set options(6) "ACS712 or other"
heißen
Das hatte ich schon korrigiert, aber komischerweise fehlt der INA219 Eintrag und der letzte ist der "ACS712 or other" Ich verstehe nicht warum der letzte Eintrag stimmt und der dazwischen fehlt
<option id="SCT-013-100" />
<option id="INA219" />
```Es fehlen soger diese beiden
Wir reden hier aber von 2 verschiedenen Dingen Das ist die XML
<option id="SCT-013-100" />
<option id="INA219" />
und das hier die HB-UNI-Sen-CURRENT_ch_master.tcl
set options(5) "INA219"
set options(6) "ACS712 or other"
Wenn du was an den Dateien änderst, musst du anschließend auch die ReGa und den RFD neustarten
Das steht in der .tcl Datei:
array_clear options set options(0) "SCT-013-015" set options(1) "SCT-013-020" set options(2) "SCT-013-030" set options(3) "SCT-013-050" set options(4) "SCT-013-100" set options(5) "INA219" set options(6) "ACS712 or other" append HTML_PARAMS(separate_1) "<td>\${stringTableHbGenericDistSensorType} </td>"
und das in der XML:
`
`
Alles neu gestartet auch gelöscht und neu angelernt
Das sehe ich, wenn ich die Einstellungen verändern möchte:
Bei mir ist alles da
Ich habe die Addons 5.2 noch einmal hochgeladen Neustart und das device neu angelernt, genau das gleiche... Kann das Problem im Sketch liegen?
Ich habe die Addons 5.2 noch einmal hochgeladen Neustart und das device neu angelernt, genau das gleiche...
Im Addon ist der Fehler doch noch drin... Da ich ihn eben erst bemerkt habe, kommt der Fix erst mit der nächsten Version 5.3
Kann das Problem im Sketch liegen?
Nein, das liegt einzig und allein an der HB-UNI-Sen-CURRENT_ch_master.tcl
Hier kannst du dir eine Vorab-Version der 5.3 herunterladen: https://www.dropbox.com/s/wzzc2dvutt2d2ec/jp-hb-devices-addon-5.3-beta.tgz?dl=0
So es funktioniert! Ich habe nur einen Faktor 10 zuviel im Ergebnis, da muss ich die Initialisierung noch einmal prüfen
Ich habe noch einmal versucht ein Element zur Liste hinzuzufügen:
Liste ist unverändert - Was mache ich denn falsch???
Gute Frage... häng die TCL mal hier an
#!/bin/tclsh
source [file join $env(DOCUMENT_ROOT) config/easymodes/em_common.tcl]
source [file join $env(DOCUMENT_ROOT) config/easymodes/EnterFreeValue.tcl]
proc getMinValue {ps_descr param} {
upvar ps_descr descr
array_clear param_descr
array set param_descr $descr($param)
set min $param_descr(MIN)
if {($param == "COND_TX_THRESHOLD_HI") || ($param == "COND_TX_THRESHOLD_LO") } {
set min [format {%.2f} $min]
}
return $min
}
proc getMaxValue {ps_descr param} {
upvar ps_descr descr
array_clear param_descr
array set param_descr $descr($param)
set max $param_descr(MAX)
if {($param == "COND_TX_THRESHOLD_HI") || ($param == "COND_TX_THRESHOLD_LO") } {
set max [format {%.2f} $max]
}
return $max
}
proc getMinMaxValueDescr {ps_descr param} {
upvar ps_descr descr
array_clear param_descr
array set param_descr $descr($param)
set min $param_descr(MIN)
set max $param_descr(MAX)
if {($param == "COND_TX_THRESHOLD_HI") || ($param == "COND_TX_THRESHOLD_LO") } {
set min [format {%.2f} $min]
set max [format {%.2f} $max]
}
return "($min - $max)"
}
proc getUnit {ps_descr param} {
upvar ps_descr descr
array_clear param_descr
array set param_descr $descr($param)
set unit $param_descr(UNIT)
return "$unit"
}
proc setSelectedSensorType {selSensorType elmID} {
puts "<script type=\"text/javasscript\">"
puts "var options = \$\$('select#$elmID option');"
puts "options\[$selSensorType\].selected = true;"
puts "</script>"
}
proc displayFields {id mode} {
# mode can be 'show' or 'hide'
if {$mode != "hide"} {
set mode "show"
}
puts "<script type=\"text/javasscript\">"
#puts "\$\$(\".j_custom\").invoke('$mode');"
puts "\$\$(\"$id\").invoke('$mode');"
puts "</script>"
}
proc set_htmlParams {iface address pps pps_descr special_input_id peer_type} {
puts "<script type=\"text/javascript\">load_JSFunc('/config/easymodes/js/HBCurrentSensor.js');</script>"
global iface_url
upvar PROFILES_MAP PROFILES_MAP
upvar HTML_PARAMS HTML_PARAMS
upvar PROFILE_PNAME PROFILE_PNAME
upvar $pps ps
upvar $pps_descr ps_descr
set url $iface_url($iface)
set devType "HB_GENERIC"
set comment {
foreach val [array names ps] {
puts "$val: $ps($val)<br/>"
}
foreach val [array names ps_descr] {
puts "$val: $ps_descr($val)<br/>"
}
puts "<br/><br/>"
}
set chn [lindex [split $special_input_id _] 1]
append HTML_PARAMS(separate_1) "<table class=\"ProfileTbl\">"
append HTML_PARAMS(separate_1) "<tr><td colspan='2'>"
append HTML_PARAMS(separate_1) "<div><b>\${stringTableConditionCurrentTitle}</b></div>"
append HTML_PARAMS(separate_1) "</td></tr>"
set prn 1
set param "SENSOR_TYPE"
append HTML_PARAMS(separate_1) "<tr>"
array_clear options
set options(0) "SCT-013-015"
set options(1) "SCT-013-020"
set options(2) "SCT-013-030"
set options(3) "SCT-013-050"
set options(4) "SCT-013-100"
set options(5) "INA219"
set options(6) "INA226"
set options(7) "ACS712 or other"
append HTML_PARAMS(separate_1) "<td>\${stringTableHbGenericDistSensorType} </td>"
set cmb $chn
append cmb $prn
append HTML_PARAMS(separate_1) "<td>[get_ComboBox options $param separate_CHANNEL_$chn\_$prn ps $param]</td>"
append HTML_PARAMS(separate_1) "</tr>"
incr prn
set param "SAMPLE_TIME"
set min [getMinValue ps_descr $param]
set max [getMaxValue ps_descr $param]
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\">"
append HTML_PARAMS(separate_1) "<td class=\"stringtable_value\">\${stringTableHBSampleTime}</td>"
append HTML_PARAMS(separate_1) "<td> <input type=\"text\" id=\"separate_CHANNEL_$chn\_$prn\" name=\"$param\" value=\"$ps($param)\" onblur=\"ProofAndSetValue('separate_CHANNEL_$chn\_$prn','separate_CHANNEL_$chn\_$prn', '$min', '$max', 1);\"> </td>"
append HTML_PARAMS(separate_1) "<td>[getUnit ps_descr $param] [getMinMaxValueDescr ps_descr $param] </td>"
append HTML_PARAMS(separate_1) "</tr>"
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\"><td colspan=\"100%\"><hr/></td></tr>"
incr prn
set param "COND_TX_THRESHOLD_HI"
set min [getMinValue ps_descr $param]
set max [getMaxValue ps_descr $param]
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\">"
append HTML_PARAMS(separate_1) "<td class=\"stringtable_value\">\${stringTableCondThresholdHi}</td>"
append HTML_PARAMS(separate_1) "<td> <input type=\"text\" id=\"separate_CHANNEL_$chn\_$prn\" name=\"$param\" value=\"[format {%.2f} $ps($param)]\" onblur=\"ProofAndSetValue('separate_CHANNEL_$chn\_$prn','separate_CHANNEL_$chn\_$prn', '$min', '$max', 1);\"> </td>"
append HTML_PARAMS(separate_1) "<td>[getUnit ps_descr $param] [getMinMaxValueDescr ps_descr $param] </td>"
append HTML_PARAMS(separate_1) "</tr>"
incr prn
set param "COND_TX_DECISION_ABOVE"
set min [getMinValue ps_descr $param]
set max [getMaxValue ps_descr $param]
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\">"
append HTML_PARAMS(separate_1) "<td class=\"stringtable_value\">\${stringTableCondTxDecisionAbove}</td>"
append HTML_PARAMS(separate_1) "<td> <input type=\"text\" id=\"separate_CHANNEL_$chn\_$prn\" name=\"$param\" value=\"$ps($param)\" onblur=\"ProofAndSetValue('separate_CHANNEL_$chn\_$prn','separate_CHANNEL_$chn\_$prn', '$min', '$max', 1);\"> </td>"
append HTML_PARAMS(separate_1) "<td>[getUnit ps_descr $param] [getMinMaxValueDescr ps_descr $param] </td>"
append HTML_PARAMS(separate_1) "</tr>"
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\"><td colspan=\"100%\"><hr/></td></tr>"
incr prn
set param "COND_TX_THRESHOLD_LO"
set min [getMinValue ps_descr $param]
set max [getMaxValue ps_descr $param]
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\">"
append HTML_PARAMS(separate_1) "<td class=\"stringtable_value\">\${stringTableCondThresholdLo}</td>"
append HTML_PARAMS(separate_1) "<td> <input type=\"text\" id=\"separate_CHANNEL_$chn\_$prn\" name=\"$param\" value=\"[format {%.2f} $ps($param)]\" onblur=\"ProofAndSetValue('separate_CHANNEL_$chn\_$prn','separate_CHANNEL_$chn\_$prn', '$min', '$max', 1);\"> </td>"
append HTML_PARAMS(separate_1) "<td>[getUnit ps_descr $param] [getMinMaxValueDescr ps_descr $param] </td>"
append HTML_PARAMS(separate_1) "</tr>"
incr prn
set param "COND_TX_DECISION_BELOW"
set min [getMinValue ps_descr $param]
set max [getMaxValue ps_descr $param]
append HTML_PARAMS(separate_1) "<tr class=\"j_custom j_currentsensor\">"
append HTML_PARAMS(separate_1) "<td class=\"stringtable_value\">\${stringTableCondTxDecisionBelow}</td>"
append HTML_PARAMS(separate_1) "<td> <input type=\"text\" id=\"separate_CHANNEL_$chn\_$prn\" name=\"$param\" value=\"$ps($param)\" onblur=\"ProofAndSetValue('separate_CHANNEL_$chn\_$prn','separate_CHANNEL_$chn\_$prn', '$min', '$max', 1);\"> </td>"
append HTML_PARAMS(separate_1) "<td>[getUnit ps_descr $param] [getMinMaxValueDescr ps_descr $param] </td>"
append HTML_PARAMS(separate_1) "</tr>"
append HTML_PARAMS(separate_1) "</table>"
}
constructor
Vielleicht ein Cache Problem des Browsers? Habe deinen Code 1:1 verwendet:
Ich verstehe es nicht, anderer Browser, Cache gelöscht, anderer Rechner immer das gleiche... Unter RaspberryMatic Einstellungen - DevConfig - DeviceList stimmt die Liste, es muss also am RaspberryMatic liegen... Als ich das Addon installiert habe hat es ja auch sofort funktioniert. Bin jetzt ratlos...
Na hattest du denn den Raspi nach deiner Änderung neugestartet?
Der ReGaHss hält die TCL im Cache...
Alternativ kannst du über "Skript testen"
system.CacheMode(0);
den Cachemode mal vorübergehend deaktivieren.
Unbedingt aber später wieder mit system.CacheMode(1);
aktivieren. Und nicht wundern, dabei kann der ReGaHss Prozess crashen.
Es klappt nicht, hab jetzt sogar den Stecker gezogen, immer noch das gleiche ich werde noch verrückt... Warum klappt die Aktuallisierung über das Addon installieren? Ich denke ich versuche es Morgen weiter...
Nur um ein paar Basics auszuschließen: Wie editierst du die Datei? Ist deine Änderung auch wirklich drin? Hast du das Dateisystem vorher beschreibbar gemacht?
Ich verwende WinSCP mit Admin Rechten - der Editor ist Nodepad++. Meine CCU Iist ein Raspberry mit RaspberryMatic neuste Version. Wenn ich die editierten Dateien downloade, sind die Änderungen darin enthalten.
Kommt mir alles sehr seltsam vor.
Ohne vorher das Dateisystem beschreibbar zu machen (mount -o remount,rw /
) kann es nicht funktionieren.
Vielleicht editierst du die ganze Zeit auch die falsche Datei - die im Addonverzeichnis, denn das liegt im user-space und ist immer r/w gemountet.
Falsch:
/usr/local/addons/jp-hb-devices-addon/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl
Richtig:
/www/config/easymodes/HB-UNI-Sen-CURRENT_ch_master.tcl
Oh was ein... ja das falsche Verzeichnis war es. Jetzt klappt es Vielen Dank für deine Hilfe!!! Weitere Fragen, wie z.B. Erhöhen der Stellen uin der Anzeige wie 0,0025 wären hier ja fehl am Platz, die stelle ich besser seperat im Forum?
Du meinst die Anzeige in "Status und Bedienung" -> "Geräte" ?
Genau, die Anzeige ist ja dreistellig 0.18A ich bräuchte ein oder zwei Stellen mehr Habe auch immer noch das Problem, dass der Messwert um den Faktor 10 zu hoch ist
ich bräuchte ein oder zwei Stellen mehr
Das wird sehr aufwendig.
Vielleicht solltest du nicht mit A sondern mit mA arbeiten. Dann sparst du dir diese ganze Dezimalgeschichte.
dass der Messwert um den Faktor 10 zu hoch ist
Warum teilst du ihn nicht einfach / 10 ? https://github.com/jp112sdl/HB-UNI-Sen-CURRENT/blob/2ed1deb66944ee0305fe46d08b8e331339dcb3b2/HB-UNI-Sen-CURRENT.ino#L363
ina219.getCurrent_mA() / 10
Geteilt hab ich ihn aber dann zeigt er mir anstatt 0.18 0.01A an oder gerundet 0.02 besser wäre eben 18mA - dann wäre meine Frage wie ich anstatt A mA anzeigen kann. Auch verstehe ich nicht, warum der Wert um den Faktor 10 zu hoch ist, da ja die Library mA zurück liefert
besser wäre eben 18mA - dann wäre meine Frage wie ich anstatt A mA anzeigen kann.
mA werden z.B. beim https://github.com/jp112sdl/HB-ES-PMSw1-USB angezeigt. Und hier die XML dazu: https://github.com/jp112sdl/JP-HB-Devices-addon/blob/master/src/addon/firmware/rftypes/hb-es-pmsw1-usb.xml#L109-L116
Auch verstehe ich nicht, warum der Wert um den Faktor 10 zu hoch ist, da ja die Library mA zurück liefert
Vielleicht falscher current divider?
Hab mich im Detail nicht weiter mit dem INA219 befasst bisher
Der gemessene Wert ist 18, was stimmt, ich finde nur nicht wo daraus 0.18 werden. Ich würde eben gerne einen Wert von 18 angezeigt bekommen, aber ich werde mich erst einmal mit den Links von dir beschäftigen - ist schwierig als Einsteiger zu finden, wo was passiert :-)
So es hat alles funktioniert, ich erhalte nun einen Wert in mA. Soll ich den Sketch ablegen oder die Änderungen irgendwo dokumentieren? Vielen Dank für deine Ausdauer und Hilfe!!!
Hmm, das mit den mA passt nun nicht mehr wirklich zu diesem Projekt.
Ja das stimmt, aber ich wollte ein wenig mehr verstehen - letzendlich ist das HB-ES-PMSw1-USB Projekt vermutlich mehr oder weniger genau das, was ich gesucht habe. Ich denke der INA219 passt nicht wirklich zum Projekt, er kann ja nur 3,6A maximal und da ist die Auflösung nicht passend. Ich könnte alles rauswerfen bis auf die Initialisierung etc. dann würde es wieder passen.
Ich könnte alles rauswerfen bis auf die Initialisierung etc. dann würde es wieder passen.
Hier im Github hat sich nichts geändert. Im master-Branch ist nach wie vor der ursprüngliche Sketch enthalten.
Ich werde das am WE übertragen, ich wußte nicht genau wie weit ich komme und wollte keinen Mist eintragen und habe erst mal alles lokal getestet.
Irgend etwas habe ich wohl falsch gemacht, habe die Änderungen eingetragen, aber jetzt sehe ich sie nicht mehr. Wie gehe ich denn korrekter Weise vor, wenn ich Änderungen eintragen will?
Fork ziehen, Änderungen im eigenen Repository machen, Pullrequest erstellen
Hallo,
ich habe gerade ein Projekt wo ich die Anbindung des o.g. Sensors verwenden könnte. Ist denn die Einbindung des INA219 noch geplant?
Viele Grüße
Elmar