Hallo,
wie sieht es denn mit dem Plugin zur Zeit aus, habe auch einen wde1 und möchte den einbinden?
Gruß Grisu911
Ankündigung
Einklappen
Keine Ankündigung bisher.
Wetterstation an sh.py anbinden
Einklappen
X
-
ist für den USB Empfänger usb_wde1. Damit kann man folgende Sensoren empfangen.Zitat von mode Beitrag anzeigenHi Stromie,
für welche ELV Wetterstation ist dein PlugIn denn gedacht?
MfG
Mode
Funk-Kombisensor KS 200/300
Funk-Temperatursensor S 300 IA
Funk-Temperatur- und Luftfeuchtesensor S 300 TH und ASH 220 Poolsensor PS 50
Hab den Empfänger noch etwas umgebaut läuft echt gut. Das Plugin macht aber noch etwas Probleme.
Grüße Ronny
Einen Kommentar schreiben:
-
Hi Stromie,
für welche ELV Wetterstation ist dein PlugIn denn gedacht?
MfG
Mode
Einen Kommentar schreiben:
-
Danke
werde ich als Beispiel nehmen. Leider gibt es in meien Zeitplan immer
unerwartete events (die Arbeit saugt ein aus)
Damit verzögert sich die Programmierung.
Grüße Stromie
Einen Kommentar schreiben:
-
Hallo Stromie,
hier mal ein kleines Beispiel (von meiner Heizungs Anbindung).
Vielleicht hilft es dir als Anfangspunkt....
PHP-Code:#!/usr/bin/env python
# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab
#########################################################################
# Copyright 2013 KNX-User-Forum e.V. https://knx-user-forum.de/
#########################################################################
# This file is part of SmartHome.py. http://smarthome.sourceforge.net/
#
# SmartHome.py is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# SmartHome.py is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with SmartHome.py. If not, see <http://www.gnu.org/licenses/>.
#########################################################################
import re
import logging
import threading
import serial
import binascii
logger = logging.getLogger('')
class EMS():
def _process_data(self,p_data):
try:
logger.debug(binascii.b2a_hex(p_data))
# parse data
#
# set value
#item = self.sh.return_item(path)
#item(wert, 'EMS')
except Exception, ex:
logger.exception("Something awful happened! (_process_data)" + str(ex))
########################## Plugin Stuff #############################
def __init__(self, smarthome,tty):
self.sh = smarthome
self._is_connected = False
#self._lock = threading.Lock()
try:
logger.info("EMS: connected to: " + tty)
self._port = serial.Serial(tty, 9600, timeout=1)
except:
logger.error("Could not open %s." % tty)
return
else:
self._is_connected = True
def run(self):
self.alive = True
state = 0
sync = 0
data = ""
i = 0
try:
while self.alive:
if self._port.isOpen() and self.alive:
read = self._port.read()
if re.search("\r\n", data):
self._process_data(data)
else:
data += read
else:
logger.error( tty + " is not open!")
except Exception, ex:
logger.error("Something awful happened! " + str(ex))
def stop(self):
logger.debug("EMS end connection....")
self.alive = False
self._port.close()
def parse_item(self, item):
if 'plugin_attr' in item.conf:
logger.debug("parse item: {0}".format(item))
return self.update_item
else:
return None
def parse_logic(self, logic):
if 'xxx' in logic.conf:
# self.function(logic['name'])
pass
def update_item(self, item, caller=None, source=None):
if caller != 'plugin':
logger.info("update item: {0}".format(item.id()))
if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
myplugin = EMS('smarthome-dummy')
myplugin.run()
Einen Kommentar schreiben:
-
Sorry kommt nicht wieder vor.
Hab mal den Wetterlogger mal an den Pi angesteckt und auf der Konsole die Schnittstelle ausgelesen. Geht super. Musste jedoch den Logger einen besseren Empfänger verpassen. Bei dem alten kamen manche Sensoren nur sporadisch.
Werde mich in den nächsten Tagen an das Plugin wagen.
Grüße Stromie
Einen Kommentar schreiben:
-
Hallo Ronny,
Wenige Sekunden. Das sleep hält das runterfahren von SmartHome.py auf.Zitat von stromie Beitrag anzeigenWelche sleep Zeit würdest du so vorschlagen.
Aber schreibe erst einmal das Plugin, das können wir später diesbezüglich optimieren.
Bis bald
Marcus
P.S. und bitte ändere Threads inhaltlich nicht nachträglich ab. Ich habe den letzten Post gelesen und 'abgelegt'. Beim nochmaligen lesen habe ich die - anscheinend neue - Frage gelesen.
Einen Kommentar schreiben:
-
Danke Marcus
das ist doch mal ein Beispiel was mich weiter bringt.
So werde mal anfrangen zu Programmieren.
habs gleich mal umgesetzt mit der While und mir ein Debug Log geschrieben, es geht .
Welche sleep Zeit würdest du so vorschlagen.
Grüße Ronny
Einen Kommentar schreiben:
-
Hallo Ronny,
kleiner Nachtrag: https://github.com/mknx/smarthome/bl..._init__.py#L38
verwendet den gewünschten while-Loop.
Mit SH.py tauscht man sich aus, in dem man items liest/setzt.
Das Item-Update findet hier, ein bisschen versteckt, statt: https://github.com/mknx/smarthome/bl...init__.py#L199
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hallo Ronny,
um das ganze Threadhandling kümmert sich SH.py. Du kannst Deine Schleife (while True
einfach in der run Methode (https://github.com/mknx/smarthome/bl..._init__.py#L32) laufen lassen.
In __init__ öffnest Du die Verbindung zu der seriellen Schnittstelle.
Bezüglich der Entwickler-Doku hast Du natürlich Recht. Das Problem ist die liebe Zeit und die Entwickler-Doku hat momentan ehrlich gesagt nicht so den Vorrang. Wenn Du magst kannst Du hier Abhilfe schaffen und parallel zur Einarbeitung dokumentieren. Das ist eh besser, wenn man das mit ein bisschen Abstand betrachtet.
Eine kleine Hilfestellung findest Du auch unter:
https://github.com/mknx/smarthome/bl.../dev/README.md
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hallo Marcus
Danke, das habe schon gemacht. Leider hilft das zum Verständnis nicht wirklich weiter. Das wir ja aktiv durch die Visu aufgerufen und nur dann wenn einer ein Item ändert. Richtig ?
Wie würde aber mein Wetter-Plugin als Endlosschleife laufen ?
While (1) ....
Es fehlt halt eine Anleitung für Programmierer.
in c# würde ich das in einen eigene Thread laufen lassen und per events die Kommunikation zwischen den Threads machen.
gibt es eine Beispiel Plugin wo while(1) verwendet wurde und in der schleife Daten mit sh.py ausgetauscht werden?
Oder Besser while self.alive ?
Grüße Ronny
Einen Kommentar schreiben:
-
Hallo Ronny,
ich habe nur ein Smartphone, ist eine tolle Sache. ;-)Zitat von stromie Beitrag anzeigendu bist aber schnell, was arbeitest du eigentlich, das du um diese Zeit online bist ?
na das sieht doch nach einem schönen Plugin für einen Einsteiger aus. Du kannst Dir mal das DMX-Plugin ansehen, das verwendet ebenfalls eine serielle Schnittstelle (allerdings schreibend).Zitat von stromie Beitrag anzeigenZur Schnittstelle: USB, ttyBUS1.
Protokoll: fester String, Messwerte mit ";" getrennt, (Logview format)
Über die Schnittstelle kommen glaubig die Hex Werte
Bei Fragen kannst Du Dich ja noch mal melden.
Bis bald
Marcus
Einen Kommentar schreiben:
-
Hallo Marcus
du bist aber schnell, was arbeitest du eigentlich, das du um diese Zeit online bist ?
Zur Schnittstelle: USB, ttyBUS1.
Protokoll: fester String, Messwerte mit ";" getrennt, (Logview format)
Über die Schnittstelle kommen glaubig die Hex Werte
Grüße Ronny
Einen Kommentar schreiben:
-
Wetterstation an sh.py anbinden
Hallo Ronny,
klar ist das möglich. Ist ja das Kernfeature.
Die Frage ist nur welche Schnittstelle verwendet wird, seriell? Und welches Protokoll gesprochen wird also wie die Werte verpackt werden.
Bis bald
Marcus
Einen Kommentar schreiben:


Einen Kommentar schreiben: