Austausch von Daten - 2 Instanzen - 2 DB
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Austausch von Daten - 2 Instanzen - 2 DB
Hallo,,
weewx verarbeitet die beiden Stationen Davis und Ecowitt mit 2 Instanzen und 2 Datenbanken.
Der Davis UV Sensor ist defekt und der Neupreis liegt bei 400€. Mir ist dieser Preis zu hoch und ein UV Sensor hat nur eine begrenzte Lebensdauer.
Vorstellung:
Die Ecowitt UV-Werte in die Davis-Datenbank importieren.
Momentane Lösung:
Exportiere NUR den letzten UV-Wert aus der Ecowitt-Datenbank (csv Datei) und
Update dann den letzten Datensatz der Davis-DB mit dem exportierten UV-Wert.
Idee:
kann die Davis-Instanz neben der Davis-DB noch direkt auf die Ecowitt-DB zugreifen, um deren UV-Wert zu verarbeiten?
weewx verarbeitet die beiden Stationen Davis und Ecowitt mit 2 Instanzen und 2 Datenbanken.
Der Davis UV Sensor ist defekt und der Neupreis liegt bei 400€. Mir ist dieser Preis zu hoch und ein UV Sensor hat nur eine begrenzte Lebensdauer.
Vorstellung:
Die Ecowitt UV-Werte in die Davis-Datenbank importieren.
Momentane Lösung:
Exportiere NUR den letzten UV-Wert aus der Ecowitt-Datenbank (csv Datei) und
Update dann den letzten Datensatz der Davis-DB mit dem exportierten UV-Wert.
Idee:
kann die Davis-Instanz neben der Davis-DB noch direkt auf die Ecowitt-DB zugreifen, um deren UV-Wert zu verarbeiten?
- Werner
- Site Admin
- Beiträge: 5707
- Registriert: 04 Dez 2001 01:00
- Wohnort: Lackenhäuser
- Danksagung erhalten: 60 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Ja das geht:kann die Davis-Instanz neben der Davis-DB noch direkt auf die Ecowitt-DB zugreifen, um deren UV-Wert zu verarbeiten?
Du musst die entsprechende weewx.conf Datei erweitern:
Code: Alles auswählen
[DataBindings]
[[wx_binding2]]
database = archive_sqlite2
table_name = archive
#manager = weewx.manager.DaySummaryManager
schema = schemas.wview_ecowitt.schema
[Databases]
[[archive_sqlite2]]
database_name = weewx_ecowitt.sdb
database_type = SQLite
Hier Beispiel für Grafik:
Code: Alles auswählen
[[[dayuv]]]
[[[[UV]]]]
data_binding = wx_binding2
data_type = UV
#color = "#0000ff"
label = UV von Ecowitt
oder in der current.inc:
Code: Alles auswählen
<td class="data">$latest(data_binding='wx_binding2').UV</td>
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Hallo Werner,
habe erst heute die Vorschläge ausprobiert und zunächst Variante 1 (skin.conf) getestet.
DayUV Image wird erstellt aber in der LogDatei gibt es eine Fehlermeldung
habe erst heute die Vorschläge ausprobiert und zunächst Variante 1 (skin.conf) getestet.
DayUV Image wird erstellt aber in der LogDatei gibt es eine Fehlermeldung
Code: Alles auswählen
ERROR weewx.reportengine: Caught unrecoverable exception in generator 'weewx.imagegenerator.ImageGenerator'
ERROR weewx.reportengine: **** '<' not supported between instances of 'float' and 'str'
ERROR weewx.reportengine: **** Traceback (most recent call last):
ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/reportengine.py", line 197, in run
ERROR weewx.reportengine: **** obj.start()
ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/reportengine.py", line 385, in start
ERROR weewx.reportengine: **** self.run()
ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/imagegenerator.py", line 42, in run
ERROR weewx.reportengine: **** self.gen_images(self.gen_ts)
ERROR weewx.reportengine: **** File "/usr/share/weewx/weewx/imagegenerator.py", line 114, in gen_images
ERROR weewx.reportengine: **** image = plot.render()
ERROR weewx.reportengine: **** File "/usr/share/weewx/weeplot/genplot.py", line 216, in render
ERROR weewx.reportengine: **** self._calcYScaling()
ERROR weewx.reportengine: **** File "/usr/share/weewx/weeplot/genplot.py", line 533, in _calcYScaling
ERROR weewx.reportengine: **** yline_min = min_with_none(line.y)
ERROR weewx.reportengine: **** File "/usr/share/weewx/weeutil/weeutil.py", line 1621, in min_with_none
ERROR weewx.reportengine: **** xmin = min(x, xmin)
ERROR weewx.reportengine: **** TypeError: '<' not supported between instances of 'float' and 'str'
ERROR weewx.reportengine: **** Generator terminated
INFO weewx.reportengine: Copied 5 files to /var/www/html/weewx/dav
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Error gelöst.
weekuv bis yearuv hatte ich nicht deaktiviert bzw. auf wx_bindung2 umgestellt.
weekuv bis yearuv hatte ich nicht deaktiviert bzw. auf wx_bindung2 umgestellt.
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Zu current.inc
In welche Zeile ist der Code einzutragen?
und in der Graphik belibt der Eintrag data_binding = wx_binding2 bestehen?
Code: Alles auswählen
<td class="data">$latest(data_binding='wx_binding2').UV</td>
und in der Graphik belibt der Eintrag data_binding = wx_binding2 bestehen?
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Auch verstanden und gelöst
1x Graphik , 1x Werte
Danke für die Codes Werner
![Embarassed :oops:](./images/smilies/icon_redface.gif)
1x Graphik , 1x Werte
Danke für die Codes Werner
- Werner
- Site Admin
- Beiträge: 5707
- Registriert: 04 Dez 2001 01:00
- Wohnort: Lackenhäuser
- Danksagung erhalten: 60 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Ich würde den UV-Wert in der current.inc so "einbauen"
Es wird dann nach dem Solarstrahlungswert gleich der UV-Wert angezeigt.
Wenn kein Solarstrahlungswert (radiation) vorhanden, wird in diesem Fall auch der
UV-Wert nicht angezeigt![Wink ;)](./images/smilies/icon_wink.gif)
Code: Alles auswählen
#elif $x[2] == 'aqieea'
<tr>
<td class="label"><span><font color=$color>$obs.label[$x[0]]</font></span></td>
#set $xv = $xt.raw
$compute_pm2_5_aqieea($xv)
</tr>
#else
<tr>
<td class="label"><font color=$color>$obs.label[$x[0]]</font></td>
<td class="data">$xt</td>
</tr>
#if $x[0] == 'radiation' ## ab hier neu
<tr>
<td class="label"><font color=$color>UV</font></td>
<td class="data">$latest(data_binding='wx_binding2').UV</td>
</tr>
#end if
Wenn kein Solarstrahlungswert (radiation) vorhanden, wird in diesem Fall auch der
UV-Wert nicht angezeigt
![Wink ;)](./images/smilies/icon_wink.gif)
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Ich habe deinen Vorschlag übernommen.
Aber ist diese Abhängigkeit so ok?
Radiation und UV haben je einen eigenen Sensor.
Bei Ausfall des Radiation-Sensors wird der UV Wert (obwohl vorhanden) nicht angezeigt.
Oder liegt hier ein Denkfehler vor?
- Werner
- Site Admin
- Beiträge: 5707
- Registriert: 04 Dez 2001 01:00
- Wohnort: Lackenhäuser
- Danksagung erhalten: 60 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Das ist richtig.Bei Ausfall des Radiation-Sensors wird der UV Wert (obwohl vorhanden) nicht angezeigt.
Ich wollte mit diesem Konstrukt nur den UV-Wert nach dem Solar-Wert anzeigen.
Da in dieser current.inc es so nicht vorgesehen ist, mit einer anderen Datenbank zu arbeiten,
hab ich diese Lösung gewählt.
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Kann man auch die Min/Max UV Werte der 2. Datenbank integrieren?
Ist es normal, dass keine Min und Max Wert unter HEUTE ausgegeben werden, wie z.B Temperatur?
Ist es normal, dass keine Min und Max Wert unter HEUTE ausgegeben werden, wie z.B Temperatur?
- Werner
- Site Admin
- Beiträge: 5707
- Registriert: 04 Dez 2001 01:00
- Wohnort: Lackenhäuser
- Danksagung erhalten: 60 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Natürlich.Kann man auch die Min/Max UV Werte der 2. Datenbank integrieren?
Sind doch da?Ist es normal, dass keine Min und Max Wert unter HEUTE ausgegeben werden, wie z.B Temperatur?
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Und brauch ich wieder deine Hilfe bzgl. Integration der UV Min/Max Werte aus der 2. Datenbank.
- Werner
- Site Admin
- Beiträge: 5707
- Registriert: 04 Dez 2001 01:00
- Wohnort: Lackenhäuser
- Danksagung erhalten: 60 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Ein UV Min-Wert ist sinnlos, da täglich immer 0 (sein sollte)Und brauch ich wieder deine Hilfe bzgl. Integration der UV Min/Max Werte
![Wink ;)](./images/smilies/icon_wink.gif)
Der neue Wert von anderen Datenbank wird dann im Array eingefügt mit der Unterscheidung welches wx_binding benutzt wird.
Beispiel:
#set $observ = [('outTemp','#e85d0d','','1'),
('outTemp','','wx_binding2','1'),
('heatindex','#b44242','','1'),
Änderung in der hilo.inc
Diese Zeile öndern:
Code: Alles auswählen
#if $x[3] == '1' and (($getattr($year, $x[0]).has_data) or ('wx_binding' in $x[2] and $getattr($year(data_binding=$x[2]), $x[0]).has_data) or ($year.wind.has_data and ($x[0] == 'windavg' or $x[0] == 'windrms' or $x[0] == 'windrms' or $x[0] == 'windvecavg')))
Code: Alles auswählen
#if $x[3] == '1' and (($getattr($year, $x[0]).has_data) or ('wx_binding' in $x[2] and $getattr($year(data_binding=$x[2]), $x[0]).has_data) or ($year.wind.has_data and ($x[0] == 'windavg' or $x[0] == 'windrms' or $x[0] == 'windrms' or $x[0] == 'windvecavg')))
Alt:
Code: Alles auswählen
#else
<tr>
<td class="label"><font color=$color>$obs.label[$x[0]]</font></td>
#if $x[2] == 'sum'
Code: Alles auswählen
#else
<tr>
<td class="label"><font color=$color>$obs.label[$x[0]]</font></td>
#if 'wx_binding' in $x[2]
#for $archive in $archive_data
<td class="data new_row hilo_$archive[0]">
#set $xv = $getattr($archive[1](data_binding=$x[2]), $x[0])
<span class="timestamp">$xv.maxtime</span>
<span>$xv.max.format(add_label=False)</span><br/>
<span class="timestamp">$xv.mintime</span>
<span>$xv.min.format(add_label=False)</span>
</td>
#end for
#elif $x[2] == 'sum'
Diese Zeile öndern:
Code: Alles auswählen
#if $x[3] == '1' and (($getattr($year, $x[0]).has_data) or ($year.wind.has_data and ($x[0] == 'windavg' or $x[0] == 'windrms' or $x[0] == 'windrms' or $x[0] == 'windvecavg')))
Code: Alles auswählen
#if $x[3] == '1' and (($getattr($year, $x[0]).has_data) or ('wx_binding' in $x[2] and $getattr($year(data_binding=$x[2]), $x[0]).has_data) or ($year.wind.has_data and ($x[0] == 'windavg' or $x[0] == 'windrms' or $x[0] == 'windrms' or $x[0] == 'windvecavg')))
Code: Alles auswählen
#else
<td class="units">$getattr($unit.label, $x[0], '')</td>
#end if
#if 'wx_binding' in $x[2]
#for $archive in $archive_data
<td class="data new_row">
#set $xv = $getattr($archive(data_binding=$x[2]), $x[0])
$xv.max.format(add_label=False)<br/>
<span class="timestamp">$xv.maxtime </span><br/>
$xv.min.format(add_label=False)<br/>
<span class="timestamp">$xv.mintime </span>
</td>
#end for
#elif $x[2] == 'sum'
#if 'wx_binding' in $x[2] neu
und dann anstatt
#if $x[2] == 'sum'
dann
#elif $x[2] == 'sum'
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Da hast du natürlich RechtEin UV Min-Wert ist sinnlos, da täglich immer 0
![Embarassed :oops:](./images/smilies/icon_redface.gif)
Den Code schaue ich mir später an
- JoachimF
- Beiträge: 222
- Registriert: 08 Dez 2021 20:29
- Wohnort: Carces
- Hat sich bedankt: 1 mal
- Kontaktdaten:
Re: Austausch von Daten - 2 Instanzen - 2 DB
Habe den Code für die hilo.inc und statistics.inc eingebaut.
Obere Zeile ist die 2. Instanz, darunter die Ausgabe der 1. Instanz mit wx_binding2 und MIN/MAX Werten![Question :?:](./images/smilies/icon_question.gif)
Obere Zeile ist die 2. Instanz, darunter die Ausgabe der 1. Instanz mit wx_binding2 und MIN/MAX Werten
![Question :?:](./images/smilies/icon_question.gif)