FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: privat58 am 26 März 2015, 07:52:49

Titel: Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 26 März 2015, 07:52:49
Hallo zusammen,
ich habe einen KlimaloggPro mit 8 Sensoren mit weewx am Raspberry angeschlossen. weewx schreibt die Werte aller Sensoren in eine txt Datei, die ich mit dem HTTPMOD Modul abhole.
Ich habe folgendes in der config stehen:

define KLIMALOGG HTTPMOD http://192.168.0.120/fhem1.txt 300
attr KLIMALOGG reading01Name TempStation
attr KLIMALOGG reading01Regex temp0: ([\d\.]+)
attr KLIMALOGG reading01Expr {sprintf("%.1f", $val)}

So habe ich alle Sensoren mit Temperatur, Luftfeuchte und Batterie eingebunden.
Bei Minusgraden werden im "buf" -Feld die negativen Werte dargestellt. Ich bekomme aber nur  die positiven Werte als Reading angezeigt. Die Werte stehen stehen z.Bsp. so "temp1: -1.57333333333" in der txt Datei und auch im "buf".

Kann mir jemand einen Tip geben, wie ich das attr KLIMALOGG reading01Expr ändern muss?
Dank an Euch im Voraus
Steffen
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 28 März 2015, 14:45:16
Hallo noch einmal,
ich komme nicht weiter, auch ein sprintf("% .1f") oder sprintf("%+.1f") funktioniert nicht.
Falls noch andere eine KlimaloggPro Anlage haben und Interesse besteht, kann ich die Sachen von weewx einmal zusammenschreiben und hier einstellen.
Steffen

Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: justme1968 am 28 März 2015, 15:51:28
in der regex muss das negative vorzeichen mit berücksichtigt werden. z.b. so:
attr KLIMALOGG reading01Regex temp0: ([\d\.-]+)

gruss
  andre
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 28 März 2015, 21:27:44
Hallo Andre,

Dank an Dich, genau das war es. Jetzt kommen die Werte richtig. Ich war in der Annahme, das wenn die Werte im "buf" richtig stehen, dann mit dem attr reading01Expr geändert werden müssen.
Ich werde in den nächsten Tagen alles zusammenstellen und hier einstellen, dann kann es auch von Anderen genutzt werden.
Steffen
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 30 März 2015, 11:23:12
Wie versprochen habe ich einmal alles zusammengestellt und in ein zip getan.

Ich selber nutze den KlimaloggPro auf einem Raspberry2 (1Gb) mit lihgttpd, meine Daten und logs werden auf einen Stick geschrieben.
weewx ist eine eigenständige Software auf Pythonbasis für verschiedene Wetterstationen und bietet eine eigene Datenbank und Auswertung.
Es können die aktuellen Daten aller Sensoren, sowie der Taupunkt, die gefühlte Temperatur und min/max Werte ausgelesen werden.

1. weewx runterladen ( weewx.com ) und auf dem Rechner installieren.
2. weewx anhalten und die Dateien im Anhang nach Anleitung kopieren
3. Es muss in der weewx.config folgendes geändert werden
        location = "Stuttgart"    #trage ein was Du möchtest
        latitude = 12.478    #halt wo die Station wohnt
        longitude =  11.997
   # diesen Pfad nach eigenen Bedürfnissen anpassen oder erst einmal so lassen, diesen aber in der lighttp config angeben
       [[kl]]
        HTML_ROOT = public_html/kl   
        skin = kl
4. den Klimalogg in fhem definieren und den Pfad zur fhem.txt angeben

Seit der Änderung mit dem Minuszeichen habe ich keine Probleme mehr. Meine eigenen Linux- und Programmierkenntnisse sind minimal, so das ich bei speziellen Fragen keine große Hilfe sein werde. Eventuell hat auch ein Anderer Ideen, wie man es einfacher umsetzen kann.
Viel Spaß damit
Steffen


Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: kaktus567 am 14 Februar 2016, 20:03:51
@privat58: leider komme ich mit der weewx.conf nicht klar bzw. mit "weewx_kl-driver_instructions_v1-7.htm". Speziell Punkt 6. Könntest Du die weewx.conf zur Verfügung stellen ?  :-[

Leider funktioniert der Webserver auch nicht, trotz Anleitung http://www.weewx.com/docs/debian.htm
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 15 Februar 2016, 08:51:15
Hallo,
das Projekt wird von Luc weiterentwickelt und es stehen die Installationsdateien bei github.
https://github.com/matthewwall/weewx-klimalogg
Danach sollte weewx erst einmal seperat laufen. Das ganze muss dann noch für fhem angepasst werden.
In der Datei etc/weewx/skins/kl/skin.conf müssen folgende Zeilen ergänzt werden (ich habe das davor und danach mitkopiert, dann siehst Du es besser):[CheetahGenerator]
    encoding = html_entities    # 'html_entities', 'utf8', or 'strict_ascii'
    [[ToDate]]
        [[[index]]]
            template = index.html.tmpl

        #FHEM data
        [[[FHEM]]]
            template = fhem.txt.tmpl

[ImageGenerator]
    data_binding = kl_binding

Anschließend die Datei fhem.txt.tmpl nach etc/weewx/skins/kl kopieren. Die Datei hat folgenden Inhalt:#set $fhem_dateformat1 = "%Y%m%d%H%M"
time: $current.dateTime.format($fhem_dateformat1)
temp0: $current.temp0.degree_C.raw
temp0maxday: $day.temp0.max.raw
temp0minday: $day.temp0.min.raw
temp0maxmonth: $month.temp0.max.raw
temp0minmonth: $month.temp0.min.raw
temp0maxyear: $year.temp0.max.raw
temp0minyear: $year.temp0.min.raw
dewpoint0: $current.dewpoint0.formatted
temp1: $current.temp1.degree_C.raw
temp1maxday: $day.temp1.max.raw
temp1minday: $day.temp1.min.raw
temp1maxmonth: $month.temp1.max.raw
temp1minmonth: $month.temp1.min.raw
temp1maxyear: $year.temp1.max.raw
temp1minyear: $year.temp1.min.raw
temp2: $current.temp2.degree_C.raw
temp2maxday: $day.temp2.max.raw
temp2minday: $day.temp2.min.raw
temp2maxmonth: $month.temp2.max.raw
temp2minmonth: $month.temp2.min.raw
temp2maxyear: $year.temp2.max.raw
temp2minyear: $year.temp2.min.raw
temp3: $current.temp3.degree_C.raw
temp3maxday: $day.temp3.max.raw
temp3minday: $day.temp3.min.raw
temp3maxmonth: $month.temp3.max.raw
temp3minmonth: $month.temp3.min.raw
temp3maxyear: $year.temp3.max.raw
temp3minyear: $year.temp3.min.raw
temp4: $current.temp4.degree_C.raw
temp4maxday: $day.temp4.max.raw
temp4minday: $day.temp4.min.raw
temp4maxmonth: $month.temp4.max.raw
temp4minmonth: $month.temp4.min.raw
temp4maxyear: $year.temp4.max.raw
temp4minyear: $year.temp4.min.raw
temp5: $current.temp5.degree_C.raw
temp5maxday: $day.temp5.max.raw
temp5minday: $day.temp5.min.raw
temp5maxmonth: $month.temp5.max.raw
temp5minmonth: $month.temp5.min.raw
temp5maxyear: $year.temp5.max.raw
temp5minyear: $year.temp5.min.raw
temp6: $current.temp6.degree_C.raw
temp6maxday: $day.temp6.max.raw
temp6minday: $day.temp6.min.raw
temp6maxmonth: $month.temp6.max.raw
temp6minmonth: $month.temp6.min.raw
temp6maxyear: $year.temp6.max.raw
temp6minyear: $year.temp6.min.raw
temp7: $current.temp7.degree_C.raw
temp7maxday: $day.temp7.max.raw
temp7minday: $day.temp7.min.raw
temp7maxmonth: $month.temp7.max.raw
temp7minmonth: $month.temp7.min.raw
temp7maxyear: $year.temp7.max.raw
temp7minyear: $year.temp7.min.raw
temp8: $current.temp8.degree_C.raw
temp8maxday: $day.temp8.max.raw
temp8minday: $day.temp8.min.raw
temp8maxmonth: $month.temp8.max.raw
temp8minmonth: $month.temp8.min.raw
temp8maxyear: $year.temp8.max.raw
temp8minyear: $year.temp8.min.raw
hum0: $current.humidity0.formatted
hum1: $current.humidity1.formatted
hum2: $current.humidity2.formatted
hum3: $current.humidity3.formatted
hum4: $current.humidity4.formatted
hum5: $current.humidity5.formatted
hum6: $current.humidity6.formatted
hum7: $current.humidity7.formatted
hum8: $current.humidity8.formatted
heatindex0: $current.heatindex0.raw
heatindex1: $current.heatindex1.raw
heatindex2: $current.heatindex2.raw
heatindex3: $current.heatindex3.raw
heatindex4: $current.heatindex4.raw
heatindex5: $current.heatindex5.raw
heatindex6: $current.heatindex6.raw
heatindex7: $current.heatindex7.raw
heatindex8: $current.heatindex8.raw
dewpoint0: $current.dewpoint0.raw
dewpoint1: $current.dewpoint1.raw
dewpoint2: $current.dewpoint2.raw
dewpoint3: $current.dewpoint3.raw
dewpoint4: $current.dewpoint4.raw
dewpoint5: $current.dewpoint5.raw
dewpoint6: $current.dewpoint6.raw
dewpoint7: $current.dewpoint7.raw
dewpoint8: $current.dewpoint8.raw
batt0: $current.batteryStatus0.raw
batt1: $current.batteryStatus1.raw
batt2: $current.batteryStatus2.raw
batt3: $current.batteryStatus3.raw
batt4: $current.batteryStatus4.raw
batt5: $current.batteryStatus5.raw
batt6: $current.batteryStatus6.raw
batt7: $current.batteryStatus7.raw
batt8: $current.batteryStatus8.raw
signalquality: $current.rxCheckPercent.formatted


Die weewx.conf an Deine Bedürfnisse anpassen.
# WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2015 Tom Keffer <tkeffer@gmail.com>
# See the file LICENSE.txt for your rights.

##############################################################################

# This section is for general configuration information.

# Set to 1 for extra debug info, otherwise comment it out or set to zero
debug = 0

# Root directory of the weewx data file hierarchy for this station
WEEWX_ROOT = /

# How long to wait before timing out a socket (FTP, HTTP) connection
socket_timeout = 20

# Do not modify this. It is used when installing and updating weewx.
version = 3.3.1

##############################################################################

#   This section is for information about the station.

[Station]
   
    # Description of the station location
    location = Name #anpassen
   
    # Latitude and longitude in decimal degrees
    latitude = 12.345 #anpassen
    longitude = 12.345 #anpassen
   
    # Altitude of the station, with unit it is in. This is downloaded from
    # from the station if the hardware supports it.
    altitude = 123, meter #anpassen
   
    # Set to type of station hardware. There must be a corresponding stanza
    # in this file with a 'driver' parameter indicating the driver to be used.
    station_type = KlimaLogg
   
    # If you have a website, you may specify an URL
    #station_url = http://www.example.com
   
    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1
   
    # Start of week (0=Monday, 6=Sunday)
    week_start = 0

##############################################################################

#   This section is for uploading data to Internet sites

[StdRESTful]
   
    [[StationRegistry]]
        # To register this weather station with weewx, set this to true
        register_this_station = false
   
    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a username and password.
        enable = false
        username = replace_me
        password = replace_me
   
    [[CWOP]]
        # This section is for configuring posts to CWOP.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify the station ID (e.g., CW1234).
        enable = false
        station = replace_me
   
    # If this is an APRS (radio amateur) station, uncomment
    # the following and replace with a passcode (e.g., 12345).
    #passcode = replace_me (APRS stations only)
   
    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        enable = false
        station = replace_me
        password = replace_me
   
    [[WOW]]
        # This section is for configuring posts to WOW.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        enable = false
        station = replace_me
        password = replace_me
   
    [[Wunderground]]
        # This section is for configuring posts to the Weather Underground.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station (e.g., 'KORHOODR3') and password.
        enable = false
        station = replace_me
        password = replace_me
       
        # Set the following to True to have weewx use the WU "Rapidfire"
        # protocol. Not all hardware can support it. See the User's Guide.
        rapidfire = False

##############################################################################

#   This section specifies what reports, using which skins, to generate.

[StdReport]
   
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = /etc/weewx/skins
   
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = /var/www/weewx
   
    # The database binding indicates which data should be used in reports.
    data_binding = kl_binding
   
    # Each of the following subsections defines a report that will be run.
   
    [[StandardReport]]
        # See the customizing guide to change the units, plot types and line
        # colors, modify the fonts, display additional sensor data, and other
        # customizations. Many of those changes can be made here by overriding
        # parameters, or by modifying templates within the skin itself.
       
        # The StandardReport uses the 'Standard' skin, which contains the
        # images, templates and plots for the report.
        #skin = Standard
skin = kl

        [[[Units]]]
            [[[[Groups]]]]
                group_altitude = meter
                group_speed2 = meter_per_second2
                group_pressure = mbar
                group_rain = mm
                group_rainrate = mm_per_hour
                group_temperature = degree_C
                group_degree_day = degree_C_day
                group_speed = meter_per_second
   
    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp
       
        # If you wish to use FTP, uncomment and fill out the next four lines.
        #user = replace with the ftp username
        #password = replace with the ftp password
        #server = replace with the ftp server name, e.g, www.threefools.org
        #path = replace with the ftp destination directory (e.g., /weather)
       
        # Set to True for a secure FTP (SFTP) connection. Not all servers
        # support this.
        secure_ftp = False
       
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/weewx
       
        # Most FTP servers use port 21
        port = 21
       
        # Set to 1 to use passive mode, zero for active mode
        passive = 1
   
    [[RSYNC]]
        # rsync'ing to a webserver is treated as just another report
        skin = Rsync
       
        # If you wish to use rsync, you must configure passwordless ssh using
        # public/private key authentication from the user account that weewx
        # runs as to the user account on the remote machine where the files
        # will be copied.
        #
        # The following three lines determine where files will be sent.
        #server = replace with the rsync server name, e.g, www.threefools.org
        #path = replace with the rsync destination directory (e.g., /weather)
        #user = replace with the rsync username
       
        # Rsync can be configured to remove files from the remote server if
        # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you
        # make a mistake in the remote path, you could could unintentionally
        # cause unrelated files to be deleted. Set to 1 to enable remote file
        # deletion, zero to allow files to accumulate remotely.
        delete = 0

     [[kl]]
       
        HTML_ROOT = ./var/www/weewx/kl  #public_html/kl
        skin = kl

##############################################################################

#   This service acts as a filter, converting the unit system coming from
#   the hardware to a unit system in the database.

[StdConvert]
   
    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.
   
    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = METRIC    # Options are 'US', 'METRICWX', or 'METRIC'

##############################################################################

#   This section can adjust data using calibration expressions.

[StdCalibrate]
   
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given.
        # It should be in the units defined in the StdConvert section.
        # Example:
        foo = foo + 0.2

##############################################################################

#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]
   
    [[MinMax]]
        barometer = 26, 32.5, inHg
        outTemp = -40, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100
        windSpeed = 0, 120, mile_per_hour

##############################################################################

#   This section controls the origin of derived values.

[StdWXCalculate]
    # Derived quantities are calculated by this service. Possible values are:
    #  hardware        - use the value provided by hardware
    #  software        - use the value calculated by weewx
    #  prefer_hardware - use value provide by hardware if available,
    #                      otherwise use value calculated by weewx
   
    pressure = prefer_hardware
    barometer = prefer_hardware
    altimeter = prefer_hardware
    windchill = prefer_hardware
    heatindex = prefer_hardware
    dewpoint = prefer_hardware
    inDewpoint = prefer_hardware
    rainRate = prefer_hardware

##############################################################################

#   For hardware that supports it, this section controls how often the
#   onboard clock gets updated.

[StdTimeSynch]
   
    # How often to check the weather station clock for drift (in seconds)
    clock_check = 14400
   
    # How much it can drift before we will correct it (in seconds)
    max_drift = 5

##############################################################################

#   This section is for configuring the archive service.

[StdArchive]
   
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300
   
    # How long to wait (in seconds) before processing new archive data. Must
    # be greater than zero.
    archive_delay = 15
   
    # If possible, new archive records are downloaded from the station
    # hardware. If the hardware does not support this, then new archive
    # records will be generated in software.
    # Set the following to "software" to force software record generation.
    record_generation = hardware
   
    # Whether to include LOOP data in hi/low statistics
    loop_hilo = True
   
    # The data binding used to save archive records
    data_binding = kl_binding

##############################################################################

#   This section binds a data store to a database.

[DataBindings]
   
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database
        table_name = archive
        # The manager handles aggregation of data for historical summaries
        manager = weewx.wxmanager.WXDaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview.schema
    [[kl_binding]]
        manager = weewx.wxmanager.WXDaySummaryManager
        database = archive_sqlite
        table_name = archive
        schema = user.kl.schema

##############################################################################

#   This section defines various databases.

[Databases]
   
    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_type = SQLite
        database_name = weewx.sdb
   
    # MySQL
    [[archive_mysql]]
        database_type = MySQL
        database_name = weewx

##############################################################################

#   This section defines defaults for the different types of databases.

[DatabaseTypes]
   
    # Defaults for SQLite databases
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which the database files are located
        SQLITE_ROOT = /opt/fhem/weewx
#/var/lib/weewx
   
    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = localhost
        # The user name for logging in to the host
        user = weewx
        # The password for the user name
        password = weewx

##############################################################################

#   This section configures the internal weewx engine.

[Engine]
   
    [[Services]]
        # This section specifies the services that should be run. They are
        # grouped by type, and the order of services within each group
        # determines the order in which the services will be run.
        prep_services = weewx.engine.StdTimeSynch
        data_services = ,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

##############################################################################

[KlimaLogg]
    # This section is for the TFA KlimaLogg series of weather stations.
   
    # Radio frequency to use between USB transceiver and console: US or EU
    # US uses 915 MHz, EU uses 868.3 MHz.  Default is EU.
    transceiver_frequency = EU
   
    # The station model, e.g., 'TFA KlimaLoggPro' or 'TFA KlimaLogg'
    model = TFA KlimaLogg
   
    # The driver to use:
    driver = user.kl
   
    # debug flags:
    #  0=no logging; 1=minimum logging; 2=normal logging; 3=detailed logging
    # Don't forget to set debug flags to 0 when finished testing!
    debug_comm = 0
    debug_config_data = 0  #1
    debug_weather_data = 0 #1
    debug_history_data = 0 #1
    debug_dump_format = 0 #auto
   
    # The serial number will be used to choose the right Weather Display Transceiver when more than one is present.
    # TIP: when the serial number of a transceiver is not known yet, remove temporary the other transceiver from
    # your server and start the driver without the serial number setting; the serial number and devid will be
    # presented in the debug logging.
    # USB transceiver Kat.Nr.: 30.3175  05/2014
    # serial = 010128031400117  # devid = 0x0075
   
    # logger_channel = 1
    # polling_interval = 10
    # comm_interval = 8
   
    # The catchup mechanism will catchup history records to a maximum of limit_rec_read_to [0 .. 51200]
    # limit_rec_read_to = 300 #range [0..51200]
   
    # Sensor texts can have 1-10 upper-case alphanumeric characters;
    #   other allowed characters: space - + ( ) * , . / \ and o (o = lower case O used as degree symbol)
    # Note: You can't preset sensor texts for non-present sensors
    # Example preset of sensor texts:
    # sensor_text1 = "5565 BED1"
    # sensor_text2 = "6DDF LAUN"
    # sensor_text3 = "7131 FRID"
    # sensor_text4 = "52F4 KID1"
    # sensor_text5 = "67D7 BATH"
    # sensor_text6 = "3731 KID2"
    # sensor_text7 = "76F4 STUD"
    # sensor_text8 = "25D7 GARA"
   
    # Preset sensor_map_id
    sensor_map_id = 0    #  0 = KL_SENSOR_MAP, 1 = WVIEW_SENSOR_MAP

Bitte die Daten für Deinen Standort anpassen. Die Datenbank lasse ich in das fhem-Verzeichniss schreiben, damit diese bei einem fhem-backup mitgesichert wird.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 19 März 2016, 14:43:00
Hallo Steffen,

ich finde das Thema hier mal in Deutsch klasse. Evtl. kannst du mir auf die Sprünge helfen? Du hast das ja schon so wie ich es will am Laufen.

Ich habe viele Postings von Luc und Matthew zu Thema TFA KlimaLoggPro und weewx gelesen, und auch alles soweit umgesetzt.

Aber es will nicht klappen, ich scheitere schon an der Kopplung. Muss man wirklich erst um 0 Uhr am Rechner sitzen und weewx starten um zu syncen? Bisher ist der Dongle noch mit einem Windowstablet gekoppelt. Wenn ich ihn derzeit wieder an das Windowstablet stecke geht es dort auch wieder sofort. D.H. er will seine Kopplung zum alten Windowstablet nicht vergessen.

Da ich das auf einem meiner fhem raspis einsetzen möchte, habe ich mir erstmal eine Debian VM eingerichtet und versuche dort weewx ans Laufen zu bekommen. Nachfolgend etwas dazu aus meinem syslog:

Mar 19 14:27:05 debian2 weewx[3968]: Stopping weewx weather system: weewx not running....
Mar 19 14:27:09 debian2 weewx[4016]: engine: Initializing weewx version 3.5.0
Mar 19 14:27:09 debian2 weewx[4016]: engine: Using Python 2.7.9 (default, Mar  1 2015, 12:57:24) #012[GCC 4.9.2]
Mar 19 14:27:09 debian2 weewx[4016]: engine: Platform Linux-3.16.0-4-amd64-x86_64-with-debian-8.3
Mar 19 14:27:09 debian2 weewx[4016]: engine: pid file is /var/run/weewx.pid
Mar 19 14:27:09 debian2 weewx[4007]: Starting weewx weather system: weewx.
Mar 19 14:27:09 debian2 weewx[4020]: engine: Using configuration file /etc/weewx/weewx.conf
Mar 19 14:27:09 debian2 weewx[4020]: engine: Initializing engine
Mar 19 14:27:09 debian2 weewx[4020]: engine: Loading station type KlimaLogg (user.kl)
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: driver version is 1.1.7
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: frequency is EU
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: using sensor map for kl schema
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: catchup limited to 51200 records
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: timing is 300 ms (0.300 s)
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: CommunicationService.init
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: comm_interval is 8
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: logger_channel is 1
Mar 19 14:27:09 debian2 weewx[4020]: KlimaLogg: MainThread: found transceiver at bus=001 device=004
Mar 19 14:27:10 debian2 kernel: [ 9902.070220] usb 1-2.1: usbfs: USBDEVFS_CONTROL failed cmd python rqt 128 rq 6 len 255 ret -110
Mar 19 14:27:10 debian2 weewx[4020]: engine: Unable to load driver: error sending control message: Die Wartezeit für die Verbindung ist abgelaufen
Mar 19 14:27:10 debian2 weewx[4020]:     ****  Exiting...


weewx.conf # WEEWX CONFIGURATION FILE
#
# Copyright (c) 2009-2015 Tom Keffer <tkeffer@gmail.com>
# See the file LICENSE.txt for your rights.

##############################################################################

# This section is for general configuration information.

# Set to 1 for extra debug info, otherwise comment it out or set to zero
debug = 1

# Root directory of the weewx data file hierarchy for this station
WEEWX_ROOT = /

# How long to wait before timing out a socket (FTP, HTTP) connection
socket_timeout = 20

# Do not modify this. It is used when installing and updating weewx.
version = 3.5.0

##############################################################################

#   This section is for information about the station.

[Station]
   
    # Description of the station location
    location = "Santa's Workshop, North Pole"
   
    # Latitude and longitude in decimal degrees
   
    # Altitude of the station, with unit it is in. This is downloaded from
    # from the station if the hardware supports it.
    altitude = 0, meter
   
    # Set to type of station hardware. There must be a corresponding stanza
    # in this file with a 'driver' parameter indicating the driver to be used.
    station_type = KlimaLogg
   
    # If you have a website, you may specify an URL
    #station_url = http://www.example.com
   
    # The start of the rain year (1=January; 10=October, etc.). This is
    # downloaded from the station if the hardware supports it.
    rain_year_start = 1
   
    # Start of week (0=Monday, 6=Sunday)
    week_start = 6

##############################################################################

#   This section is for uploading data to Internet sites

[StdRESTful]
   
    [[StationRegistry]]
        # To register this weather station with weewx, set this to true
        register_this_station = false
   
    [[AWEKAS]]
        # This section is for configuring posts to AWEKAS.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a username and password.
        enable = false
        username = replace_me
        password = replace_me
   
    [[CWOP]]
        # This section is for configuring posts to CWOP.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify the station ID (e.g., CW1234).
        enable = false
        station = replace_me
   
    # If this is an APRS (radio amateur) station, uncomment
    # the following and replace with a passcode (e.g., 12345).
    #passcode = replace_me (APRS stations only)
   
    [[PWSweather]]
        # This section is for configuring posts to PWSweather.com.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        enable = false
        station = replace_me
        password = replace_me
   
    [[WOW]]
        # This section is for configuring posts to WOW.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station and password.
        enable = false
        station = replace_me
        password = replace_me
   
    [[Wunderground]]
        # This section is for configuring posts to the Weather Underground.
       
        # If you wish to do this, set the option 'enable' to true,
        # and specify a station (e.g., 'KORHOODR3') and password.
        enable = false
        station = replace_me
        password = replace_me
       
        # Set the following to True to have weewx use the WU "Rapidfire"
        # protocol. Not all hardware can support it. See the User's Guide.
        rapidfire = False

##############################################################################

#   This section specifies what reports, using which skins, to generate.

[StdReport]
   
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = /etc/weewx/skins
   
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = /var/www/weewx
   
    # The database binding indicates which data should be used in reports.
    data_binding = kl_binding
   
    # Each of the following subsections defines a report that will be run.
   
    [[kl]]
        HTML_ROOT = /var/www/weewx/kl
        skin = kl

    [[FTP]]
        # FTP'ing the results to a webserver is treated as just another report,
        # albeit one with an unusual report generator!
        skin = Ftp
       
        # If you wish to use FTP, uncomment and fill out the next four lines.
        #user = replace with the ftp username
        #password = replace with the ftp password
        #server = replace with the ftp server name, e.g, www.threefools.org
        #path = replace with the ftp destination directory (e.g., /weather)
       
        # Set to True for a secure FTP (SFTP) connection. Not all servers
        # support this.
        secure_ftp = False
       
        # To upload files from something other than what HTML_ROOT is set
        # to above, specify a different HTML_ROOT here.
        #HTML_ROOT = /var/www/weewx
       
        # Most FTP servers use port 21
        port = 21
       
        # Set to 1 to use passive mode, zero for active mode
        passive = 1
   
    [[RSYNC]]
        # rsync'ing to a webserver is treated as just another report
        skin = Rsync
       
        # If you wish to use rsync, you must configure passwordless ssh using
        # public/private key authentication from the user account that weewx
        # runs as to the user account on the remote machine where the files
        # will be copied.
        #
        # The following three lines determine where files will be sent.
        #server = replace with the rsync server name, e.g, www.threefools.org
        #path = replace with the rsync destination directory (e.g., /weather)
        #user = replace with the rsync username
       
        # Rsync can be configured to remove files from the remote server if
        # they don't exist under HTML_ROOT locally. USE WITH CAUTION: if you
        # make a mistake in the remote path, you could could unintentionally
        # cause unrelated files to be deleted. Set to 1 to enable remote file
        # deletion, zero to allow files to accumulate remotely.
        delete = 0

##############################################################################

#   This service acts as a filter, converting the unit system coming from
#   the hardware to a unit system in the database.

[StdConvert]
   
    # The target_unit affects only the unit system in the database. Once
    # chosen it cannot be changed without converting the entire database.
    # Modification of target_unit after starting weewx will result in
    # corrupt data - the database will contain a mix of US and METRIC data.
    #
    # The value of target_unit does not affect the unit system for
    # reporting - reports can display US, Metric, or any combination of units.
    #
    # In most cases, target_unit should be left as the default: US
    #
    # In particular, those migrating from a standard wview installation
    # should use US since that is what the wview database contains.
   
    # DO NOT MODIFY THIS VALUE UNLESS YOU KNOW WHAT YOU ARE DOING!
    target_unit = METRIC    # Options are 'US', 'METRICWX', or 'METRIC'

##############################################################################

#   This section can adjust data using calibration expressions.

[StdCalibrate]
   
    [[Corrections]]
        # For each type, an arbitrary calibration expression can be given.
        # It should be in the units defined in the StdConvert section.
        # Example:
        foo = foo + 0.2

##############################################################################

#   This section is for quality control checks. If units are not specified,
#   values must be in the units defined in the StdConvert section.

[StdQC]
   
    [[MinMax]]
        barometer = 26, 32.5, inHg
        outTemp = -40, 120, degree_F
        inTemp = 10, 120, degree_F
        outHumidity = 0, 100
        inHumidity = 0, 100
        windSpeed = 0, 120, mile_per_hour
        pressure = 24, 34.5, inHg

##############################################################################

#   This section controls the origin of derived values.

[StdWXCalculate]
    # Derived quantities are calculated by this service. Possible values are:
    #  hardware        - use the value provided by hardware
    #  software        - use the value calculated by weewx
    #  prefer_hardware - use value provide by hardware if available,
    #                      otherwise use value calculated by weewx
   
    pressure = prefer_hardware
    barometer = prefer_hardware
    altimeter = prefer_hardware
    windchill = prefer_hardware
    heatindex = prefer_hardware
    dewpoint = prefer_hardware
    inDewpoint = prefer_hardware
    rainRate = prefer_hardware

##############################################################################

#   For hardware that supports it, this section controls how often the
#   onboard clock gets updated.

[StdTimeSynch]
   
    # How often to check the weather station clock for drift (in seconds)
    clock_check = 14400
   
    # How much it can drift before we will correct it (in seconds)
    max_drift = 5

##############################################################################

#   This section is for configuring the archive service.

[StdArchive]
   
    # If the station hardware supports data logging then the archive interval
    # will be downloaded from the station. Otherwise, specify it (in seconds).
    archive_interval = 300
   
    # How long to wait (in seconds) before processing new archive data. Must
    # be greater than zero.
    archive_delay = 15
   
    # If possible, new archive records are downloaded from the station
    # hardware. If the hardware does not support this, then new archive
    # records will be generated in software.
    # Set the following to "software" to force software record generation.
    record_generation = hardware
   
    # Whether to include LOOP data in hi/low statistics
    loop_hilo = True
   
    # The data binding used to save archive records
    data_binding = kl_binding

##############################################################################

#   This section binds a data store to a database.

[DataBindings]
   
    [[wx_binding]]
        # The database must match one of the sections in [Databases].
        # This is likely to be the only option you would want to change.
        database = archive_sqlite
        # The name of the table within the database
        table_name = archive
        # The manager handles aggregation of data for historical summaries
        manager = weewx.wxmanager.WXDaySummaryManager
        # The schema defines the structure of the database.
        # It is *only* used when the database is created.
        schema = schemas.wview.schema
    [[kl_binding]]
        manager = weewx.wxmanager.WXDaySummaryManager
        database = archive_sqlite
        table_name = archive
        schema = user.kl.schema

##############################################################################

#   This section defines various databases.

[Databases]
   
    # A SQLite database is simply a single file
    [[archive_sqlite]]
        database_type = SQLite
        database_name = weewx.sdb
   
    # MySQL
    [[archive_mysql]]
        database_type = MySQL
        database_name = weewx

##############################################################################

#   This section defines defaults for the different types of databases.

[DatabaseTypes]
   
    # Defaults for SQLite databases
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which the database files are located
SQLITE_ROOT =/opt/fhem/weewx
#SQLITE_ROOT = /var/lib/weewx
   
    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = localhost
        # The user name for logging in to the host
        user = weewx
        # The password for the user name
        password = weewx

##############################################################################

#   This section configures the internal weewx engine.

[Engine]
   
    [[Services]]
        # This section specifies the services that should be run. They are
        # grouped by type, and the order of services within each group
        # determines the order in which the services will be run.
        prep_services = weewx.engine.StdTimeSynch
        data_services = ,
        process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, weewx.engine.StdQC, weewx.wxservices.StdWXCalculate
        archive_services = weewx.engine.StdArchive
        restful_services = weewx.restx.StdStationRegistry, weewx.restx.StdWunderground, weewx.restx.StdPWSweather, weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
        report_services = weewx.engine.StdPrint, weewx.engine.StdReport

##############################################################################

[KlimaLogg]
    # This section is for the TFA KlimaLogg series of weather stations.
   
    # Radio frequency to use between USB transceiver and console: US or EU
    # US uses 915 MHz, EU uses 868.3 MHz.  Default is EU.
    transceiver_frequency = EU
   
    # The station model, e.g., 'TFA KlimaLoggPro' or 'TFA KlimaLogg'
    model = TFA KlimaLoggPro
   
    # The driver to use:
    driver = user.kl
   
    # debug flags:
    #  0=no logging; 1=minimum logging; 2=normal logging; 3=detailed logging
    # Don't forget to set debug flags to 0 when finished testing!
    debug_comm = 1
    debug_config_data = 1
    debug_weather_data = 1
    debug_history_data = 1
    debug_dump_format = auto
   
    # The serial number will be used to choose the right Weather Display Transceiver when more than one is present.
    # TIP: when the serial number of a transceiver is not known yet, remove temporary the other transceiver from
    # your server and start the driver without the serial number setting; the serial number and devid will be
    # presented in the debug logging.
    # USB transceiver Kat.Nr.: 30.3175  05/2014
    # serial = 010128031400117  # devid = 0x0075
   
     logger_channel = 1
     polling_interval = 10
     comm_interval = 8
   
    # The catchup mechanism will catchup history records to a maximum of limit_rec_read_to [0 .. 51200]
    # limit_rec_read_to = 300 #range [0..51200]
   
    # Sensor texts can have 1-10 upper-case alphanumeric characters;
    #   other allowed characters: space - + ( ) * , . / \ and o (o = lower case O used as degree symbol)
    # Note: You can't preset sensor texts for non-present sensors
    # Example preset of sensor texts:
     sensor_text1 = "2515 WOHN"
     sensor_text2 = "2529 DRAU"
     sensor_text3 = "2580 KELL"
     sensor_text4 = "251A VRAU"
     sensor_text5 = "2510 BATH"
     sensor_text6 = "2608 KUEC"
     sensor_text7 = "250B SCHL"
     sensor_text8 = "2596 DACH"
   
    # Preset sensor_map_id
    sensor_map_id = 0    #  0 = KL_SENSOR_MAP, 1 = WVIEW_SENSOR_MAP


Vielen Dank

Lion

Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 20 März 2016, 16:43:42
Hallo Lion,
wenn weewx startet, musst Du die USB-Taste am KlimaloggPro drücken, damit eine Verbindung hergestellt werden kann. Wenn das USB-Symbol erscheint, ist eine Verbindung aufgebaut. Weewx liest dann den Speicher aus und kümmert sich um die Uhrzeit.
Es ist Dir überlassen, ob Du es 0Uhr machst oder eher oder später.
:-)
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 20 März 2016, 18:28:52
Danke für deine Antwort.

Jedoch bleibt usbfs: USBDEVFS_CONTROL failed.

Ich werde versuchen Luc zu erreichen.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 21 März 2016, 08:07:51
Eventuell liegt es an Deiner VM. Wird denn der Empfänger in der VM erkannt? Richte doch den Raspi schnell ein, da Du eh mit fhem spielen möchtest.
Du hast PM.
Steffen
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 21 März 2016, 18:26:41
Ich habe 3 Pi 3 und spreche mit denen nur über WLAN (weil die schon in den Verteilern der Fußbodenheizung mit bis zu 12 Temperaturfühlern (1wire ftw) wohnen) dort will ich das erst implementieren wenn das funktioniert. Da ich nicht so klein wie mein Sohn bin, komme ich da nur sehr schwer hin. da macht ausprobieren keinen Spaß. Mal schauen ob ich Antwort bekomme. Dann melde ich mich was draus geworden ist, bzw. woran es gelegen hat.

Lion
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 29 März 2016, 10:54:00
Ich habe weewx nun doch mal auf dem pi direkt angebunden, und da ich diesmal apt-get -fy install nicht vergessen habe, klappt es sofort.

Dann habe ich mir dir Datenbankdatei mal angeschaut und ein kleines Modul geschrieben welches die Daten direkt aus der Datenbank holt. Ohne Umweg über Textdatei usw.

Bitte schaut euch das mal an ob ich da ganz arge Fehler drin hab. Basis dafür war GPIO4. Hab ich eigentlich schon gesagt wie genial fhem ist! Ich bräuchte mindestens einen Tip wie ich evtl. Connectionprobleme in den fhemlog schubse und wie ich das Modul nennen sollte, da ich denke das 99_KLW ungeschickt ist, ich würde es mindestens 98_KLW nennen wollen, aber ich hab die Nummerierung noch nicht durchschaut. Gerne dürft ihr den Beitrag auch in anderen Forumsteilen pushen.
Danke Lion

##############################################
#
# $Id 99_KLW.pm 2016-03-28 lion $
#
##############################################

package main;

use strict;
use warnings;
use POSIX;
use DBI;

use vars qw{%attr %defs};

sub KLW_Initialize($$) {
my ($hash) = @_;

$hash->{DefFn} = "KLW_Define";
$hash->{UndefFn} = "KLW_Undef";
$hash->{GetFn} = "KLW_Get";
$hash->{AttrList} = "channel:0,1,2,3,4,5,6,7,8 pollingInterval ".$readingFnAttributes;
}

sub KLW_Define($$) {
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
return "syntax: define <name> KLW <id>|KLIMALOGGPRO" if (int(@a) != 3);
$hash->{NAME} = $a[0];
$hash->{TYPE} = 'KLW';

$hash->{STATE} = "Initialized";
$hash->{fhem}{interfaces} = "temperature";
$hash->{fhem}{interfaces} = "humidity";
$hash->{fhem}{interfaces} = "dewpoint";
KLW_DeviceUpdateLoop($hash);
return;
}

sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "SQLite";
my $database = "/opt/fhem/weewx/weewx.sdb";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr;

my $channel = $attr{$hash->{NAME}}{channel} || 0;

my $stmt = qq(select temp$channel,humidity$channel,dewpoint$channel from archive where datetime=(select value from archive_day__metadata where name='lastUpdate'););

my $sth = $dbh->prepare( $stmt );

my $rv = $sth->execute() or die $DBI::errstr;

while(my @row = $sth->fetchrow_array())
{
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"state","T: $row[0]");
readingsBulkUpdate($hash,"temperature",$row[0]);
readingsBulkUpdate($hash,"humidity",$row[1]);
readingsBulkUpdate($hash,"dewpoint",$row[2]);
readingsEndUpdate($hash,1);
}
$dbh->disconnect();
return;
}

sub KLW_DeviceUpdateLoop($) {
my ($hash) = @_;
my $pollingInterval = $attr{$hash->{NAME}}{pollingInterval} || 300;
KLW_Get($hash);
InternalTimer(gettimeofday()+$pollingInterval, "KLW_DeviceUpdateLoop", $hash, 0);
return;
}

sub KLW_Undef($) {
my ($hash) = @_;
RemoveInternalTimer($hash);
return;
}

1;


Anbinden geht dann so:
define INDOOR KLW KLIMALOGGPRO
attr INDOOR channel 0
define WZ.KL KLW KLIMALOGGPRO
attr WZ.KL channel 1
...
define Garage.KL KLW KLIMALOGGPRO
attr Garage.KL channel 8

Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 29 März 2016, 18:46:05
Schön, wenn dies funktioniert. Werde es mir die nächsten Tage mal anschauen. Der Winter ist leider auch bei uns vorbei, da ist nicht mehr soviel Zeit über.
Lässt sich noch der Batteriestatus abgreifen? Ich lasse mir die Temperaturen immer rot hinterlegen, wenn diese gewechselt werden müssen.
Danke aber für Deine Arbeit.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 29 März 2016, 20:54:16
Bei mir steht da überall 0, hab's aber mal mit eingebaut, die Nachkommastellen hab ich ebenfalls noch überarbeitet.

##############################################
#
# $Id 99_KLW.pm 2016-03-29 lion $
#
##############################################

package main;

use strict;
use warnings;
use POSIX;
use DBI;

use vars qw{%attr %defs};

sub KLW_Initialize($$) {
my ($hash) = @_;

$hash->{DefFn} = "KLW_Define";
$hash->{UndefFn} = "KLW_Undef";
$hash->{GetFn} = "KLW_Get";
$hash->{AttrList} = "channel:0,1,2,3,4,5,6,7,8 pollingInterval ".$readingFnAttributes;
}

sub KLW_Define($$) {
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
return "syntax: define <name> KLW <id>|KLIMALOGGPRO" if (int(@a) != 3);
$hash->{NAME} = $a[0];
$hash->{TYPE} = 'KLW';

$hash->{STATE} = "Initialized";
$hash->{fhem}{interfaces} = "temperature";
$hash->{fhem}{interfaces} = "humidity";
$hash->{fhem}{interfaces} = "dewpoint";
$hash->{fhem}{interfaces} = "batteryStatus";
KLW_DeviceUpdateLoop($hash);
return;
}

sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "SQLite";
my $database = "/opt/fhem/weewx/weewx.sdb";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr;

my $channel = $attr{$hash->{NAME}}{channel} || 0;

my $stmt = qq(select temp$channel,humidity$channel,dewpoint$channel,batteryStatus$channel from archive where datetime=(select value from archive_day__metadata where name='lastUpdate'););

my $sth = $dbh->prepare( $stmt );

my $rv = $sth->execute() or die $DBI::errstr;

while(my @row = $sth->fetchrow_array())
{
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"state","T: ".sprintf('%.1f', $row[0]));
readingsBulkUpdate($hash,"temperature",sprintf('%.2f', $row[0]));
readingsBulkUpdate($hash,"humidity",sprintf('%i', $row[1]));
readingsBulkUpdate($hash,"dewpoint",sprintf('%.2f', $row[2]));
readingsBulkUpdate($hash,"batteryStatus",sprintf('%i', $row[3]));
readingsEndUpdate($hash,1);
}
$dbh->disconnect();
return;
}

sub KLW_DeviceUpdateLoop($) {
my ($hash) = @_;
my $pollingInterval = $attr{$hash->{NAME}}{pollingInterval} || 300;
KLW_Get($hash);
InternalTimer(gettimeofday()+$pollingInterval, "KLW_DeviceUpdateLoop", $hash, 0);
return;
}

sub KLW_Undef($) {
my ($hash) = @_;
RemoveInternalTimer($hash);
return;
}

1;
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: CoolTux am 29 März 2016, 21:00:52
Warum machst Du daraus nicht ein eigenes Modl?
Der Code wäre dafür so gut wie fertig. Nur ein paar Anpassungen.



Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 29 März 2016, 21:30:10
Hat mir doch keine Ruhe gelassen. Nach dem fhem abgestürzt war habe ich erste einmal
apt-get install libdbi-perl
apt-get install libdbd-sqlite3-perl

nachinstalliert. Nun funktioniert es.
Batterie zeigt 0 wenn voll, 1 bei leerer Batterie.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 29 März 2016, 21:42:18
Zitat von: CoolTux am 29 März 2016, 21:00:52
Warum machst Du daraus nicht ein eigenes Modl?
Wenn Bedarf besteht gerne ...

Zitat von: privat58 am 29 März 2016, 21:30:10
Hat mir doch keine Ruhe gelassen. Nach dem fhem abgestürzt war habe ich erste einmal
apt-get install libdbi-perl
apt-get install libdbd-sqlite3-perl

nachinstalliert. Nun funktioniert es.
Batterie zeigt 0 wenn voll, 1 bei leerer Batterie.
Dann nutzt du sicher sqlite dblog bisher noch nicht.

Wenn das mit den Batterien so klappt kann man sich ja vorher kümmern.
Evtl. hau ich in den State irgendwas rein.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 30 März 2016, 06:53:59
Bedarf besteht sicher, da ich immer mal wieder Anfragen hatte.
Luc hat in der Datenbank auch den Empfang zum USB-Empfänger mit drinnen (rxCheckPercent), das könte man als state eventuell auswerten.
Leider hatte ich am Anfang und auch zwischendurch Empfangsprobleme, das zwar ein guter Empfang angezeigt wird, dieser aber nicht mehr da war. Ich habe eine ganze Weile gesucht, bis ich einen Platz im Keller gefunden hatte ( es sind knapp 3000l Pufferspeicher und viele Heizungsrohre dazwischen)
Wenn man dort mit einem Zeitlimit arbeiten könnte, ware das genial für die Kontrolle der Verbindung. Bisher muss ich immer auf das Display schauen, ob USB angezeigt wird. Leider weiß ich nicht, ob man dies so umsetzen kann, das wenn xxx Sekunden kein neuen Daten in die Datenbank geschrieben werden etwas ins state geschrieben wird.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 30 März 2016, 17:18:31
Ja da werde ich etwas einbauen. Ich denke ich werde den Timestamp in fhem parken und dann die Abweichung einbauen. Im syslog steht auch das der empfang weg ist und man die usb taste drücken möge. Mal sehen ob ich da ran komme. Ich hatte heute morgen in allen Zimmern angeblich 0 Grad und die Thresholds haben alle Stellantriebe aktiviert, so soll das nicht sein.

Lion
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 30 März 2016, 21:26:36
V3 mit setzen von rxCheckPercent in Channel 0 und hochzählen von failures pro Channel, da bei mir gerne mal der Außensensor alleine spinnt. failures * pollinginterval = Dauer der Funktrennung.

Viel Spaß

Lion

##############################################
#
# $Id 99_KLW.pm 2016-03-30 lion $
#
##############################################

package main;

use strict;
use warnings;
use POSIX;
use DBI;

use vars qw{%attr %defs};

sub KLW_Initialize($$) {
my ($hash) = @_;

$hash->{DefFn} = "KLW_Define";
$hash->{UndefFn} = "KLW_Undef";
$hash->{GetFn} = "KLW_Get";
$hash->{AttrList} = "channel:0,1,2,3,4,5,6,7,8 pollingInterval ".$readingFnAttributes;
}

sub KLW_Define($$) {
my ($hash, $def) = @_;
my @a = split("[ \t][ \t]*", $def);
return "syntax: define <name> KLW <id>|KLIMALOGGPRO" if (int(@a) != 3);
$hash->{NAME} = $a[0];
$hash->{TYPE} = 'KLW';

$hash->{STATE} = "Initialized";
$hash->{fhem}{interfaces} = "temperature";
$hash->{fhem}{interfaces} = "humidity";
$hash->{fhem}{interfaces} = "dewpoint";
$hash->{fhem}{interfaces} = "batteryStatus";
KLW_DeviceUpdateLoop($hash);
return;
}

sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "SQLite";
my $database = "/opt/fhem/weewx/weewx.sdb";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect($dsn, $userid, $password, { RaiseError => 1 }) or die $DBI::errstr;

my $channel = $attr{$hash->{NAME}}{channel} || 0;

my $stmt = qq(select temp$channel,humidity$channel,dewpoint$channel,batteryStatus$channel,rxCheckPercent
      from archive where
      datetime=(select value from archive_day__metadata where name='lastUpdate') and
      temp$channel is not null;);

my $sth = $dbh->prepare( $stmt );

my $rv = $sth->execute() or die $DBI::errstr;

my $go = 0;

while(my @row = $sth->fetchrow_array())
{
$go = 1;
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,"state","T: ".sprintf('%.1f', $row[0]));
readingsBulkUpdate($hash,"temperature",sprintf('%.2f', $row[0]));
readingsBulkUpdate($hash,"humidity",sprintf('%i', $row[1]));
readingsBulkUpdate($hash,"dewpoint",sprintf('%.2f', $row[2]));
readingsBulkUpdate($hash,"batteryStatus",sprintf('%i', $row[3]));
                if ($channel eq "0") {readingsBulkUpdate($hash,"rxCheckPercent",sprintf('%.1f', $row[4]));}
readingsBulkUpdate($hash,"failures",0);
readingsEndUpdate($hash,1);
}
if ($go==0) { readingsSingleUpdate($hash,'failures',ReadingsVal($hash->{NAME},"failures",0)+1,1); }

$dbh->disconnect();
return;
}

sub KLW_DeviceUpdateLoop($) {
my ($hash) = @_;
my $pollingInterval = $attr{$hash->{NAME}}{pollingInterval} || 300;
KLW_Get($hash);
InternalTimer(gettimeofday()+$pollingInterval, "KLW_DeviceUpdateLoop", $hash, 0);
return;
}

sub KLW_Undef($) {
my ($hash) = @_;
RemoveInternalTimer($hash);
return;
}

1;


Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 31 März 2016, 20:05:23
Habe es gerade eingespielt, danke für den "Empfang" einfügen. Ich melde mich zurück, falls etwas nicht klappt. Dauert aber, bis ich alle Sensoren umstelle. Fehlt im Moment etwas an Zeit.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 01 April 2016, 15:26:11
Konnte es nicht lassen. Während der Pelletsbrenner Probe lief habe ich mal einen "Stationsausfall" simuliert. Brauche meinen USB-Empfänger nur 50cm zur Seite hängen. "failures" wurden bis 12 hochgezählt, danach habe ich wieder alles zurück gehangen und die nächsten Readings kamen wieder sauber rein.
Muss schon sagen, tolle Arbeit. Danke für Deine Mühe.
Was mir noch aufgefallen ist, es fehlen die min/max Temperaturen. Diese hatte ich bei mir mit genutzt und auf dem Flurplan angezeigt. Luc hatte diese für weewx genutzt und ich konnte diese aus der fhem.txt auslesen. Aber dies kann man wahrscheinlich am besten mit dem statistics modul machen. Was anderes mir erst einmal nicht aufgefallen.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 01 April 2016, 20:10:39
Die Werte in die Readings zu packen sollte machbar sein. Was mich gerade ein bisschen stört ist das ich die Luftfeuchtigkeit nicht einfach so sehe. Ich hatte bisher ein tolles Programm welches grün , gelb oder rot wurde. So sah man von weitem wo gelüftet werden muss. Ich arbeite mich gerade in die Tablet-UI ein, mal sehen wie einfach ich da die Readings reinbekomme, falls das in clonedummy, notifyalarm oder so ausartet, würde ich mir überlegen wie das Modul die dann nötigen Teile per autocreate anlegen kann.

@all: Kennt jemand ein Ampelmodul was sich da nutzen ließe? So ähnlich wie THRESHOLD. Nur eben 4 Stufen.  0-40% schwarz, 40-60% grün, 60-65% gelb, >65% rot. Es gibt noch weitere Faktoren die die Schwellwerte beeinflussen, das würde jetzt aber zu weit führen.

Wenn du die fhem.txt irgendwann nicht mehr brauchst, solltest du dir überlegen die reportservices in der engine-section der weewx.conf mit # auszukommentieren.
An die rest-services habe ich mich noch nicht rangetraut, aber da ist sicher auch einiges hinfällig.

Lion
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 01 April 2016, 20:34:20
Ich habe mal statistics eingerichtet. Sollte eigentlich reichen. Kann ja dann jeder machen wie er möchte.
Im Floorplan arbeite ich mit readingsGroup und valueStyle oder valueIcon. Hat für meine Zwecke bisher immer gereicht. Gibt bestimmt auch etwas Eleganteres, der Floorplan reicht aber schon für mich aus, was den Schwierigkeitsgrad angeht.
Wenn ich komplett umgestellt habe, werde ich nur den fhem-Teil rausnehmen und den Rest von weewx nicht anfassen.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 02 April 2016, 14:46:53
Habe gerade umgestellt auf das Modul. Min-Max-Temperaturen habe ich so eingestellt.
define Klimalogg0 KLW KLIMALOGGPRO
attr Klimalogg0 channel 0
define Klimalogg0_Statistik statistics Klimalogg0
attr Klimalogg0_Statistik singularReadings Klimalogg0:temperature:(Min|Max):(Day|Month|Year)

Um den Batteriestand und den Empfang im Floorplan zu "signalieren" nutze ich readingsGroup.
define Aussentemp1 readingsGroup Klimalogg1:temperature
attr Aussentemp1 fp_Energie 10,910
attr Aussentemp1 fp_Heizung 10,910
attr Aussentemp1 fp_Wetter 10,910
attr Aussentemp1 group z_Anzeige
attr Aussentemp1 mapping { 'temperature' => '' }
attr Aussentemp1 noheading 1
attr Aussentemp1 nolinks 1
attr Aussentemp1 notime 1
attr Aussentemp1 style style="font-size:80px"
attr Aussentemp1 valueFormat %.1f&degC
attr Aussentemp1 valueStyle { temperature => '{ReadingsVal($DEVICE,"batteryStatus","0")?"style=\"color:red\"":($DEVICE,"failures","0")?"style=\"color:green\"":"style=\"color:black\""}' }
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 03 April 2016, 21:01:19
Die readingsgroup's mit den Formatieren helfen echt gut. Hab fast den alten Stand der Informationen mit fhem nun nachgebaut.

Lion.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: bull1t am 04 April 2016, 11:54:46
Hallo zusammen,
erlösend das es für meinen KlimaLoggPro doch eine Möglichkeit gibt das Gerät in FHEM einzubinden.
Danke hiermit für eure Beiträge dazu.
Habe soweit ich denke alles ordnungsgemäß installiert bekomme die Basisstation aber nicht verbunden.
Fhem und Weewx laufen auf einem Raspi mit Wheezy Installation.
Habe weewx gestoppt, USB Dongle am Pi eingesteckt,USB Taste am Klimalogg gedrückt und weewx gestartet.
Aber es passiert nichts.
Bekomme mittels tail -n50 /var/log/syslog folgende Antwort was den USB Stick angeht.

Apr  4 11:46:18 raspberrypi weewx[3069]: fousb: Cannot find USB device with Vend                          or=0x1941 ProdID=0x8021 Device=None
Apr  4 11:46:18 raspberrypi weewx[3069]: engine: Unable to load driver: Unable t                          o find USB device

Für mich ist Linux bisher ein Böhmisches Dorf und ich hab Mühe alles zu verstehen.
Muss irgendwo ggf. noch etwas installiert oder der EMpfänger explizit eingetragen werden.
Wäre nett wenn mir jemand helfen könnte. Ich seh den Fehler nämlich nicht.
mfg und schönen Tag bull1t
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 04 April 2016, 18:36:00
Es reicht leider nicht nur weewx zu installieren. Auf github kannst Du den Treiber runterladen und dort ist auch erklärt, wie dieser installiert wird.
Lion hat dann den Weg zur Datenbank gemacht mit seinem Modul.
https://github.com/matthewwall/weewx-klimalogg (https://github.com/matthewwall/weewx-klimalogg)
Die weewx.cfg liegt unter /etc/weewx. In der weewx.cfg kannst Du dann den Weg zur Datenbank anlegen. So sieht es bei mir aus:
[DatabaseTypes]
   
    # Defaults for SQLite databases
    [[SQLite]]
        driver = weedb.sqlite
        # Directory in which the database files are located
        SQLITE_ROOT = /opt/fhem/weewx
#/var/lib/weewx
   
    # Defaults for MySQL databases
    [[MySQL]]
        driver = weedb.mysql
        # The host where the database is located
        host = localhost
        # The user name for logging in to the host
        user = weewx
        # The password for the user name
        password = weewx

Du musst auch Deinen Standort in der weewx.cfg angeben.
    # Latitude and longitude in decimal degrees
    latitude = xxxxxx
    longitude = xxxxxx

Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 04 April 2016, 20:50:38
Punkt 3 der Anleitung https://github.com/matthewwall/weewx-klimalogg (https://github.com/matthewwall/weewx-klimalogg) ist nicht ganz richtig

Wenn man die master.zip heruntergeladen hat. Hab ich sie mit wee_extension --install master.zip installiert.

Viel wichtiger ist aber vorher noch die richtige Installation von weewx. http://www.weewx.com/docs/debian.htm (http://www.weewx.com/docs/debian.htm) Nachfolgend alle Befehle welche ich final benutzt habe:


[cd Downloads/
mkdir weewx
cd weewx/
wget http://weewx.com/downloads/weewx_3.5.0-1_all.deb
sudo dpkg -i weewx_3.5.0-1_all.deb
sudo apt-get -fy install

wget https://github.com/matthewwall/weewx-klimalogg/archive/master.zip
sudo wee_extension --install master.zip

sudo /etc/init.d/weewx stop
#weewx.conf austauschen
sudo /etc/init.d/weewx start


Dann habe ich meine weewx.conf aus meiner VM (da hab ich das vorher ausprobiert) mit winscp rüberkopiert. bissel mit 'chmod 0666 weewx.conf' die Berechtigungen angepasst.

Die weewx.conf habe ich mir vorher zusammengestückelt (notepadd++ compare modul), da es mehrere Optionen gibt die für den Klimalogg geändert werden müssen. Das Datenmodel wird wegen den 9 Kanälen gravierend geändert.

Wenn du die Anleitungen exakt befolgst könntest du auch einfach meine weewx.conf benutzen, falls du die haben willst, Bescheid geben dann schicke ich sie dir per pm. Ich weiß leider nicht mehr wie und woher ich alle Infos im Detail habe, ich habe viel aus den Google Mail Archiven von Luc und Matthew und habe sogar mit Luc mich direkt per Email unterhalten können.

Wenn ich mich aufraffe den fhem founder zwecks Entwicklerzugriff anzusprechen, wird es die komplette Anleitung in der Modulhilfe geben, dabei dürft ihr mir dann gerne mithelfen. Leider müsst ihr dann eure defines minimal ändern, da es dann anstatt klw irgendwie anders heißen wird, Momentan tendiere ich zu WEEWX2FHEM oder nur KLWEEWX. Da ich plane wenn ich mal ganz viel Zeit habe die Anbindung direkt zu gestalten dann könnte es KLP heißen. Da ich aber mit meinen Recherchen noch nicht durch bin, da diese Wetterstation auch der Lacrosse ähneln soll welche schon existiert, hätte ich was als Basis. Ich denke Luc hat auch Lacrosse als Basis für seinen Weewxtreiber genommen.

Lion[/code]
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: privat58 am 11 April 2016, 19:47:05
Bisher läuft es ohne Probleme. Habe nur noch Probleme mit readingsGroup und valueStyle, da stimmt die Anpassung noch nicht. Ist im Moment aber leider keine Zeit dafür.
Vielen Dank auf jedem Fall für Deine Umsetzung.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 12 April 2016, 18:08:30
Ich habe durch deine Anregung das bei mir so umgesetzt, habe sogar den ersten Batteriewechsel daraufhin durchgeführt, ist aber auch noch nicht final:



define Klimalogger readingsGroup <>,<Temperatur>,<Luftfeuchte>,<Batterie>,<Fehler>\
*KL:temperature,humidity,batteryStatus,failures
attr Klimalogger notime 1
attr Klimalogger room Heizung,Tab
attr Klimalogger sortDevices 1
attr Klimalogger valueFormat {'temperature' => "%.1f °C",'humidity' => "%.i %%"}
attr Klimalogger valueIcon {'batteryStatus.0'=>'batterie@lightgreen','batteryStatus.1'=>'batterie@red'}
attr Klimalogger valueStyle { if($READING eq "temperature" && $VALUE > 23){ 'style="color:red"' }\
elsif( $READING eq "temperature" && $VALUE <= 20 ){ 'style="color:blue"' }\
elsif( $READING eq "temperature" && $VALUE > 23 ){ 'style="color:orange;;;;font-weight:bold"' }\
elsif( $READING eq "temperature" && $VALUE > 20 ){ 'style="color:green"' }\
elsif( $READING eq "humidity" && $VALUE > 65 ){ 'style="color:red;;;;font-weight:bold"' }\
elsif( $READING eq "humidity" && $VALUE > 60 ){ 'style="color:orange"' }\
elsif( $READING eq "humidity" && $VALUE > 40 ){ 'style="color:green"' }\
else{ 'style="color:gray"' } }
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Annitoka am 07 September 2016, 22:20:48
Hallo zusammen,

auch wenn der thread schon älter ist, versuche ich es hier einmal...
Ich habe das Modul 99_KLW.pm hier in V3 benutzt, in das Verzeichnis /opt/fhem/FHEM kopiert, die beiden Befehle:
apt-get install libdbi-perl
apt-get install libdbd-sqlite3-perl
habe ich auch im Terminal mit sudo auf dem Raspberry ausgeführt.
Sobald ich jetzt in der FHEM Kommandozeile define EG_Wohnen_KL KLW KLIMALOGGPRO oder ähnliches eingebe, stürzt FHEM bei mir ab und ich muss es neu starten.
Ich habe weewx auf einem anderen Raspberry laufen und habe manuell die die SQLite Datenbank auf den Raspberry mit FHEM kopiert. Ich kann mir schwer vorstellen, dass es daran liegt, da ich den Absturz von FHEM ja schon beim reinen define-Befehl erhalte.
Habt Ihr eine Idee was ich falsch mache?

Danke schon mal im Voraus und viele Grüße aus Karlsruhe
Kai

P.S. update in FHEM ist auch gemacht
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 07 September 2016, 23:13:23
Evtl. ist sqlite3 an sich nicht installiert? Es gibt einen Parameter mit dem apt-get alle Abhängigkeiten prüft und auflöst. Ist aber grad zu spät das mir der sofort einfällt.

Und, oder Du lässt du mir deine "/opt/fhem/weewx/weewx.sdb" Datei zukommen, dann schaue ich ob alle Felder so vorhanden sind das sie ausgelesen werden können.

Eigentlich kannst du die Datenbank Datei nicht sinnvoll kopieren, solange weewx läuft. Bitte vorher weewx anhalten (sudo /etc/init.d/weewx stop).

Ich habe mehrere Raspis mit fhem, und schicke die Daten mit fhem2fhem hin und her. Somit landen 3 Sensorenwerte auch in einem fhem ohne weewx. Da der Stick eben nur an einem Raspi stecken kann.

Lion
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Annitoka am 08 September 2016, 20:46:25
Hallo Lion,

herzlichen Dank für deine schnelle Hilfe. Natürlich war deine erste Vermutung richtig und SQLite3 war nicht installiert.
Danke auch, dass du sogar bereit gewesen wäret dir die Mühe mit der Datenbank zu machen. Wirklich klasse Unterstützung :-)

Jetzt funktioniert alles super, nachdem SQLite3 läuft. So in ganz kleinen Schritten näher ich mich dem Verständnis von Fhem von Tag zu Tag ;-)

Besten Dank !!!
Viele Grüße
Kai
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Annitoka am 08 September 2016, 23:33:31
Zitat von: Lion am 01 April 2016, 20:10:39
[...]
@all: Kennt jemand ein Ampelmodul was sich da nutzen ließe? So ähnlich wie THRESHOLD. Nur eben 4 Stufen.  0-40% schwarz, 40-60% grün, 60-65% gelb, >65% rot. Es gibt noch weitere Faktoren die die Schwellwerte beeinflussen, das würde jetzt aber zu weit führen. [...]
Lion

Nochmal ich...
wegen des Ampelmodelsl:

Da ich in meiner alten Wohnung mal ein Schimmelproblem hatte, habe ich mir vor 3 Jahren den Klimalogg angeschafft und auch 8 Sensoren angeschlossen. Ich war dann froh als Luc mich als Test-User für Weewx aufnahm und ich endlich die Daten zumindest per Raspberry als Webpage darstellen konnte. In weewx habe ich mir dann eine Seite gebastelt, in der ich im Cheetah-Template per einfachen Python Rechenoperationen die absolute Luftfeuchte in den einzelnen Räumen nach der sog. Magnusformel mit dem Sättigungsdampfdruck berechne. Vereinfacht gesprochen vergleiche ich da die absolute Luftfeuchte aussen und in den einzelnen Räumen (im Detail noch etwas mehr), um dann mir eine "Lüftungsempfehlung" ausgeben zu lassen. Ähnlich wie in einer Ampel rot/gelb/grün und dann als Empfehlung "Fenster öffnen, schliessen, Heizen usw.)...
Da meine Programierkenntnisse leider im Wesentlichen nur aus Copy&Paste bestehen, ist die Programmierung im Template sicherlich mehr als umständlich und bestimmt auch nicht elegant gelöst. Aufgrund mangelnder Datenbankkenntnisse habe ich es auch nie geschafft, die Werte in die Datenbank einzupflegen, sondern sehe sie lediglich auf der Webseite (siehe Screenshot - Ausschnitt aus der Probe-Webpage, so wie ich sie zur Zeit zu Testzwecken laufen habe)...
Heute Abend dachte ich mir, eigentlich wären diese Berechnung perfekt für FHEM, da man dann z.B. einen Entfeuchter über eine Funksteckdose ein- bzw. ausschalten könnte, über Fenstersensoren Lüftungsempfehlungen ausgeben kann usw...

Nun meine Frage: Hättest Du Lion (oder auch jemand anders) Lust & Zeit das in FHEM zu implementieren (ich kriege das mit meinen mangelnden Kenntnissen leider nicht hin, unterstütze aber soweit ich kann gerne), ich würde dir dann die nächsten Tage die Quellen und die Formeln zusammenstellen und auch das Prinzip etwas ausführlicher erläutern.
Auf diesem Weg wäre dann sogar dein FHEM-Modul als Lüftungs- bzw. Schimmelwarmer möglich.

Ist nur ein Vorschlag, da ich weiss, dass solche Sachen immer Zeitfresser sind.

Viele Grüße aus Karlsruhe
Kai
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 10 September 2016, 17:56:08
Ja ich hatte vor fhem auch was besseres zum Lüften. https://www.google.de/#newwindow=1&q=grundidee+feuchtewarner+2014 (https://www.google.de/#newwindow=1&q=grundidee+feuchtewarner+2014)

Die Erfahrungswerte daraus sind in meine Schwellwerte eingegangen. Aber zufrieden bin ich damit nicht.

Von daher kann man sicher etwas vor berechnetes in den Readings mit ausgeben.

Es wären allerdings weitere Parameter "Außen Kanal" und d pro Kanal (um die 0,7) nötig in der Definition.

Zitat
Aus Feuchtwarner2014 Grundidee:

Frage: "Wie kann der Parameter d bestimmt werden?"
Ansatz: Suchen der kältesten Wandfläche und messen von Tw mit IR-Thermometer.
Dann folgt: d=(Tw -Ta)/(Ti-Ta )

Ich nehme da die Ecken der Fensterbretter.

Oder du hast eine einfachere Berechnungsmethode?

Lion
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Annitoka am 10 September 2016, 21:36:40
Ich hab mich im Prinzip auch an die Ausführungen im Link gehalten, nur nicht diese Software selbst benutzt.
Die Schwellenwerte sind in meinem Screenshot dann in die kritische Temp. überführt.
ZitatEs wären allerdings weitere Parameter "Außen Kanal" und d pro Kanal (um die 0,7) nötig in der Definition
Da wäre wohl noch ne ganze Menge mehr nötig, da der Klimalogg die absolute Luftfeuchtigkeit nicht angibt, un man diese mit einer Näherungsformel für die Wasserdampfsättigungskurve ausrechnen müsste, zusätzlich müsste der Luftdruck entweder per weiterem Sensor oder als "Fixiert mit 1023mbar" definiert werden.
D.h. die Nachbildung von so etwas wie Feuchtewarner 2014 in FHEM wäre wohl sehr aufwändig, da auch Vergleichsabfragen hinzukommen.

Zitat
Ich nehme da die Ecken der Fensterbretter.

Oder du hast eine einfachere Berechnungsmethode?
Ich nehme meine kälteste Stelle im Raum, meistens sind das auch bei mir die Fensterlaibungen. Die Fensterbretter selbst nehme ich nicht, da die bei mir aus Stein sind und die Schimmelwahrscheinlichkeit hier geringer als an der Tapete ist.

Die Berechnung geht aber m.E. nicht einfacher, für diese "Schwellenwerte". Der Einfachheit halber habe ich für alle Räume 0,8 angesetzt. (Die Messung war fast überall in dieser Größenordnung)

Viele Grüße und Danke
Kai
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 03 November 2016, 17:12:37
Hey Leute,

Ich hab mir gedacht das Problem nicht umgehen zu wollen und die datenbank von einem anderen Pi abzufragen.
Leider Scheiter ich irgendwo. Theoretisch müsste die .pm welche die datenbank abfragt doch so aussehen: sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "SQLite";
my $host = "http://192.168.178.48";
my $port = "22";
my $database = "/var/lib/weewx/weewx-kl.sdb";
my $dsn = "DBI:$driver:dbname=$database";
my $userid = "";
my $password = "";
my $dbh = DBI->connect("DBI:$driver:database=$database:host=$host:port=$port", $userid, $password { RaiseError => 1 }) or die $DBI::errstr;

oder?
also ich bekomme bei mir als Fehlermeldung, dass das Modul nicht geladen werden kann
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 04 November 2016, 22:44:55
So, bin nochmal über das Modul gegangen und habe etwas geändert. Leider bekomme ich immer noch einen crash sobald ich etwas definiere.
Ich hab alle zusätzlichen libs und lasse zur Einfachheit die weewx-kl.sdb mit auf den apache server schreiben um keine Rechte Probleme zu haben.
Das Plugin würde ich dann eventuell auch gerne generalisieren. Dafür müsste es aber erstmal von Fhem übernommen werden.
Es sieht jetzt so aus, dass die Daten auf einem anderen Pi liegen und ich sie abgreife. sub KLW_Get($) {
my ($hash) = @_;
my $driver   = "SQLite";
my $host = "192.168.178.48";
my $database = "/var/www/html/weewx/kl/weewx-kl.sdb";
my $dsn = "DBI:$driver:database=$database;host=$host";
my $user = "pi";
my $password = "raspberry";
my $dbh = DBI->connect($dsn, $user, $password, { RaiseError => 1 }) or die $DBI::errstr;

Leider crasht Fhem sofort wenn ich dann versuche den Klimalogg zu definieren.
Jemand eine Idee?
grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 04 November 2016, 23:02:49
Es gibt Log-Dateien, in die kannst du in dem Fall nur lokal reinschauen.

sudo tail -f /var/log/syslog
sudo tail -f /opt/fhem/log/fhem-2016-11.log

evtl. hilft das weiter, du kannst ggf. auch gerne etwas davon hier posten.

Die sqlite3 weewx-kl.sdb hat eigentlich normal kein Password und user nötig.

Lion
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 04 November 2016, 23:21:36
Das interessante ist ja, dass nichts ins log geschrieben wird und fhem abschmiert.
Mir gehen langsam die ideen aus woran es noch liegen könnte.
Hab es auch ohne Passwort und auch schon über sftp Verbindung versucht. Immer das selbe Resultat.
Noch eine Idee?
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Lion am 05 November 2016, 09:07:04
Ich denke es geht nur lokal, remote wirst du nicht an sqlite3 rankommen. Nutze doch fhem2fhem für den Datenaustausch.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 05 November 2016, 10:29:07
Danke für den Tipp. Werde es mal versuchen und poste dann eine Lösung hier.
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 05 November 2016, 17:25:50
Habe mich umentschieden und benutze jetzt einfach httpmod und greife auf den anderen pi zu.
simpler Tipp: einfach die fhem.txt in den var/www/html/weewx/kl/ ordner schreiben lassen.
Setze mich aber Vielleicht nochmal an das Plugin um es einheitlich zu machen falls Interesse besteht??
Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Forty am 25 Januar 2017, 22:00:45
Hallo zusammen,

über die Suchfunktion bin ich auf diesen Thread gestoßen.

Vor ca. 2 Wochen habe ich mir ein Raspberry Pi 3 zugelegt, um einige einfache Automatisierungen in meiner Wohnung durchzuführen. (Und auch um etwas Einblick in die Programmierung zu erhalten. Ich bin absoluter Anfänger in Sachen Linux, Programmieren und Co. - war bisher eher einfacher Office-Anwender). Nach einigen Fehlversuchen habe ich es dann doch geschafft das RasPi einzurichten und fhem zu installieren. Mit Anleitung hat es auch funktioniert einige Dummys zu installieren.

Als erstes echtes Gerät wollte ich dann die Temperatur- und Feuchtesensoren meines TFA Klimalogg pro einbinden, da diese schon vorhanden waren. Nach der ersten Internetrecherche stellte ich aber fest, dass diese nicht in fehm eingebunden werden können.

Umso größer war die Freude als ich diesen Thread gefunden habe :-). Bald stellte sich allerdings Ernüchterung ein, da ich feststellte, dass mir diese Hose einige Nummern zu groß ist.......... Mittlerweile musste ich drei mal mein Raspberry neu aufsetzen, da ich dem Gerät nach meinen unzähligen Fehleingaben nicht mehr vertraute....

Ich hoffe, dass mir hier jemand helfen kann, evtl. mit einer Schritt-für-Schritt-Anleitung für hoffnungslose Fälle :-)?

Vielen Dank schon Mal

MfG
Forty
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 27 Januar 2017, 12:14:55
Hatte dazu mal einen kurzen Guide geschrieben, der in meinem GitHub ist. Mustt du mal gucken ob das für dich am Raspberry Pi 3 auch funktioniert.
Hier zu finden: https://github.com/Syrex-o/weewx-klimalogg
Einfach mal bei guide.md gucken
Ich würde dir auch die Versionen empfehlen die ich verlinkt habe, da sich seid dem etwas in der Datenstruktur geändert hat.

Falls du fragen hast kannst du mir auch einfach ne direkte nachricht schicken. Hab eigentlich bis heute immer noch regen Kontakt mit dem Entwickler des Klimalogg Treibers.

Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Forty am 28 Januar 2017, 17:01:25
Hallo,

vielen Dank, Syrex-o. Mit der Anleitung guide.md habs sogar ich geschafft weewx und den Driver für den Klimalogg zu installieren.

In weewx.conf ist weder ein Absatz Standard, noch Simulator vorhanden und data_binding ist zwei mal auf kl_binding gesetzt. Habe deshalb an der Datei nichts verändert.

Ich habe jetzt allerdings noch das Problem, den Klimalogg mit dem Raspberry zu verbinden. Nachdem ich die USB-Taste gedrückt habe (bis zum Piepton) blinkt die Anzeige am Klimalogg kurze Zeit und verschwindet dann wieder.

Muss ich evtl. doch noch etwas an der Datei weewx.conf ändern? Oder muss ich noch einen Befehl ausführen (Zusätzlich zu sudo /etc/init.d/weewx start)?

MfG
Forty
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 28 Januar 2017, 19:19:13
ZitatHallo,

vielen Dank, Syrex-o. Mit der Anleitung guide.md habs sogar ich geschafft weewx und den Driver für den Klimalogg zu installieren.

In weewx.conf ist weder ein Absatz Standard, noch Simulator vorhanden und data_binding ist zwei mal auf kl_binding gesetzt. Habe deshalb an der Datei nichts verändert.

Ich habe jetzt allerdings noch das Problem, den Klimalogg mit dem Raspberry zu verbinden. Nachdem ich die USB-Taste gedrückt habe (bis zum Piepton) blinkt die Anzeige am Klimalogg kurze Zeit und verschwindet dann wieder.

Muss ich evtl. doch noch etwas an der Datei weewx.conf ändern? Oder muss ich noch einen Befehl ausführen (Zusätzlich zu sudo /etc/init.d/weewx start)?

MfG
Forty

Also zur Zeit habe ich auch einige Probleme, wenn ich es in eine MySql Datenbank schreiben lasse. Ich hoffe das machst du nicht, sondern nutzt wie standardmäßig ausgewählt SQLite?!

Um dein Gerät nun zu pairen, musst du: sudo /etc/init.d/weewx restart gleichzeitig ausführen und die USB Tase bis zum Signalton festhalten. Dann müsste das Gerät sich pairen. Falls dann USB im Display erscheint ist es eine Frage der Zeit, bis alle Werte in die Datenbank geschrieben sind. Kannst du dir live angucken dann: sudo tail -f /var/log/syslog

Wenn es noch ein Problem gibt schreib einfach  ;)

Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Forty am 01 Februar 2017, 19:10:46
Also Klimalogg und Raspberry sind verbunden, Speicher wird ausgelesen und ich sehe auch, dass sich in der "syslog"-Datei etwas tut  :)

Vielen Dank dafür!

Jetzt versuche ich mal die Daten irgendwie in fhem einzubinden. Habe mir vorsichtshalber gleich ein Image vom aktuellen Stand erstellt  :)

An der Einstellung für die Datenbank habe ich nichts verändert. Gehe deshalb davon aus, dass ich weiterhin die Standard-Einstellung verwende.

MfG
Forty
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 01 Februar 2017, 21:40:29
ZitatJetzt versuche ich mal die Daten irgendwie in fhem einzubinden

Sollte ja jetzt auch kein Problem mehr sein.

Gibt einen netten guide, damit weewx die daten in eine txt schreibt. Damit kannst du dann einfach per httpmod drauf zugreifen.

Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: bull1t am 21 Dezember 2017, 14:27:32
Nach längerer Pause zurück...
Hallo Lion und privat58 - der Tip mit dem Treiber war Goldrichtig. Danke dafür.
Sitze jetzt wieder daran die Station einzubinden. Verbindung steht. Werte werden übertragen.
Allerdings bekomme ich das nicht im FHEM zum anzeigen.
Wo finde ich den Guide zum exportieren in eine Textdatei für FHEM.
Noch für das Grundverständnis.
Dieses 98_KLW.pm hab ich angelegt. Auch bei mir stürzt FHEM sofort nach dem Define ab.
SQ3Lite ist installiert. Brauche ich Apache ect. ebenfalls (hab ich irgendwo gelesen)?
Denn Apache beisst sich mit der installieren HA Bridge.
Hab mir die Finger wund gesucht seit 3 Tagen. Hoffe jemand hat den eintscheidenden Tip.
Danke bUll1t
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 22 Dezember 2017, 10:22:09
ZitatWo finde ich den Guide zum exportieren in eine Textdatei für FHEM.

Das sollte es sein: https://github.com/matthewwall/weewx-fhem (https://github.com/matthewwall/weewx-fhem)

Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: bull1t am 29 Dezember 2017, 14:18:18
Danke Syrex-o,
jetzt passiert wenigstens was in FHEM.
Jetzt steht im FHEM-Logfile:

WEEWX: Read callback: Error: localhost: Connection refused

...das gleiche stand auch davor da mit der Adresse des Pi statt "localhost"...

Hat jemand ne Idee warum die Verbindung zurückgewiesen wird?
Gehe mal davon aus das die Rechte fehlen!?

Vielleicht kann mir auch mal wer erklären was in Reihenfolge zu tun ist.
Bei den ganzen Versuchen hab ich am Ende keinerlei reproduzierbare Vorgehensweise, falls mal eine Neuinstallation ansteht.
Stufe 1:weewx installieren & Klimalogg Pro mit Pi verbinden # das hab ich hinbekommen # Werte werden ausgelesen
Stufe 2:die Daten in FHEM einbinden:
- wird dieses KLW Modul nun benötigt oder nicht
- wo gebe ich exakt ein an welchem Ort weewx die Daten ablegen soll
- wird die Datenbank ausgelesen von FHEM oder wird die Datenbank in eine Textdatei exportiert die ausgelesen wird
- wo gebe ich in FHEM an welche Datei mit den Daten eingelesen werden soll und wo liegt diese Datei nun
- müssen Passwörter oder Berechtigungen gesetzt werden

Mein Pi benutzt FHEM 5.8 / Raspian Stretch und aktuell sowohl Filelog als auch dblog mit sq3lite
Folgende Dinge habe ich bereits umgesetzt:
DHT22, 1wire Sensoren für Heizungsvorlauf/Rücklauf, Ultraschall Ölstandsmessung, Milight Licht, Yamaha ARV, HA Bridge für Amazon Alexa
Das alles passiert ausschließlich auf diesem Pi.
Aber bei dem Klimalogg komme ich nicht weiter. Mir fehlt hier leider grundsätzliches Verständnis zum Ablauf.
Ich muss gestehen ich blicke hier aktuell nicht durch.

Gruß bUll1t
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: Syrex-o am 04 Januar 2018, 15:33:46
ZitatWEEWX: Read callback: Error: localhost: Connection refused
Logischer Weise kannst du nicht auf Ordner zugreifen, die keine Rechte haben Daten preiszugeben.
Daher muss dein Verzeichnis in dem du die Txt ablegst eines sein, welches schon im Netzwerk agiert.
Da WEEWX die daten selbst in einenm Ordner speichert der gesehen wird sollte die txt auch dort landen.
Das ist bei mir: /var/www/html/weewx/kl

Dort liegen auch die Bilder, welche auf der Seite angezeigt werden, die von WEEWX geschrieben werden.

Zitatwird dieses KLW Modul nun benötigt oder nicht
Nein brauchst du nicht. Die Daten greifst du dann einfach über HTTPMOD ab
sieht dann so aus:

define KLIMALOGG HTTPMOD http://192.168.178.48/weewx/kl/fhem.txt 300
attr KLIMALOGG userattr reading01OExpr reading01OName reading01ORegex reading02OExpr reading02OName reading02ORegex reading03OExpr reading03OName reading03ORegex reading04OExpr reading04OName reading04ORegex reading05OExpr reading05OName reading05ORegex reading06OExpr reading06OName reading06ORegex reading07OExpr reading07OName reading07ORegex reading08OExpr reading08OName reading08ORegex reading09OExpr reading09OName reading09ORegex reading10OExpr reading10OName reading11OExpr reading11OName reading12OExpr reading12OName
attr KLIMALOGG reading01OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading01OName TempStation
attr KLIMALOGG reading01ORegex temp0: ([\d\.-]+)
attr KLIMALOGG reading02OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading02OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading02ORegex temp1: ([\d\.-]+)
attr KLIMALOGG reading03OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading03OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading03ORegex temp2: ([\d\.-]+)
attr KLIMALOGG reading04OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading04OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading04ORegex temp3: ([\d\.-]+)
attr KLIMALOGG reading05OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading05OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading05ORegex temp4: ([\d\.-]+)
attr KLIMALOGG reading06OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading06OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading06ORegex temp5: ([\d\.-]+)
attr KLIMALOGG reading07OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading07OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading07ORegex temp6: ([\d\.-]+)
attr KLIMALOGG reading08OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading08OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading08ORegex temp7: ([\d\.-]+)
attr KLIMALOGG reading09OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading09OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading09ORegex temp8: ([\d\.-]+)
attr KLIMALOGG reading10OExpr {sprintf("%.1f", $val)}
attr KLIMALOGG reading10OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading11OExpr {sprintf("%i", $val)}
attr KLIMALOGG reading11OName "Name des Sensors den Du vergibst"
attr KLIMALOGG reading12OExpr {sprintf("%i", $val)}
attr KLIMALOGG reading12OName "Name des Sensors den Du vergibst"
attr KLIMALOGG room Wetter

Wichtig: "Name des Sensors den Du vergibst" ohne Anführungszeichen

Zitatwo gebe ich exakt ein an welchem Ort weewx die Daten ablegen soll
/etc/weewx/weewx.conf
In der Datei findest du folgendes:

[StdReport]
   
    # Where the skins reside, relative to WEEWX_ROOT
    SKIN_ROOT = /etc/weewx/skins/
   
    # Where the generated reports should go, relative to WEEWX_ROOT
    HTML_ROOT = /var/www/html/weewx
   
    # The database binding indicates which data should be used in reports.
    data_binding = kl_binding
    [[kl]]
        skin = kl
        HTML_ROOT = /var/www/html/weewx/kl

Wichtig ist, dass der HTML_ROOT der öffentliche Ordner ist. Bei mir: /var/www/html/weewx/kl

Zitatwird die Datenbank ausgelesen von FHEM oder wird die Datenbank in eine Textdatei exportiert die ausgelesen wird
Die Datenbank wird von der FHEM Extension ausgelesen und dann in eine txt geschrieben, damit fhem sie lesen kann.

Grüße
Titel: Antw:Klimalogg mit HTTPD bei Minusgraden
Beitrag von: bull1t am 09 Januar 2018, 06:27:23
Vielen Dank für die geduldige Beantwortung meiner Fragen.
Werde es zeitnah ausprobieren und Rückmeldung geben.
Nochmals Danke