From 16420ef41f7532c7f86ce10930a9054ce20042e4 Mon Sep 17 00:00:00 2001 From: msinn Date: Sat, 11 May 2019 14:30:02 +0200 Subject: [PATCH] Removed rpi1wire from release (to be converted to SmartPlugin first) --- rpi1wire/README.md | 181 ------------------------------------ rpi1wire/__init__.py | 217 ------------------------------------------- 2 files changed, 398 deletions(-) delete mode 100644 rpi1wire/README.md delete mode 100644 rpi1wire/__init__.py diff --git a/rpi1wire/README.md b/rpi1wire/README.md deleted file mode 100644 index fa88af17c..000000000 --- a/rpi1wire/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# Raspberry Pi 1-Wire plugin - -# Requirements - -This plugin has been developed for the Raspberry Pi. It allows easy access to 1-Wire - sensors. -We tested the plugin with the Raspberry Pi B and the temperature sensor DS18B20. - -## Supported Hardware - -Tested width: -Raspberry Pi Model B -1-Wire - Sensor DS18B20 - -# Configuration - -## Raspberry Pi - - see also: http://www.kompf.de/weather/pionewiremini.html - -### /boot/config.txt -
-   # activating 1-wire without pullup (3-wire-Version)
-   dtoverlay=w1-gpio,gpiopin=4,pullup=off
-
-### /etc/modules - -
-   #(3-wire-Version)
-   w1-gpio pullup=0  
-   w1-therm
-
- -# Smarthome - -## plugin.conf - -
-[rpi1wire]
-   class_name = Rpi1Wire
-   class_path = plugins.rpi1wire
-#   dirname = "/sys/bus/w1/devices"
-#   cycle = 120
-
- -## plugin.yaml - -
-rpi1wire:
-   class_name: Rpi1Wire
-   class_path: plugins.rpi1wire
-#   dirname: "/sys/bus/w1/devices"
-#   cycle: 120
-
- -dirname -
-   is the path where the Raspberry provides the values of the 1-wire - sensors
-   default "/sys/bus/w1/devices"
-
-cycle -
-   is the period in which the values are updated
-   default 120 seconds
-
- - -## items -# .conf - -
-   [rpi1wire]
-       [[sensor_list]]
-           name = Sensor-List
-           type = str
-           visu_acl = ro
-       [[sensors]]
-          name = Sensors
-          type = num
-          visu_acl = ro
-
- -# .yaml - -
-   rpi1wire:
-       sensor_list:
-           name: Sensor-List
-           type: str
-           visu_acl: ro
-       sensors:
-          name: Sensors
-          type: num
-          visu_acl: ro
-
-sh.rpi1wire.sensor_list() -
-   - contains a list of all found sensors
-
-sh.rpi1wire.sensors() -
-   - contains the number of sensors found
-
-### rpi1wire_name -
   
-   The name of the 1-wire - sensor
-    - rpi1wire_name or rpi1wire_id are possible
-
-### rpi1wire_id -
   
-   The id of the 1-wire - sensor
-    - rpi1wire_name or rpi1wire_id are possible
-
-### rpi1wire_update -
   
-   If you trigger this item, the sensors are re-searched without restart the server
-
- -### Example - - -
-# items/my.conf
-
-[someroom]
-    [[mytemperature]]
-        name = my Name
-        type = num
-        visu_acl = ro
-        rpi1wire_name = rpi_temp1
-        sqlite = yes
-
-#or
-
-[someroom]
-    [[mytemperature]]
-        name = my Name
-        name = Wohnzimme Raumtemperatur
-        type = num
-        visu_acl = ro
-        rpi1wire_id = 28-0215018970ff
-        sqlite = yes
-
-[rpi1wire]
-    [[update]]
-        name = Update Sensor-List
-        type = bool
-        visu_acl = rw
-        rpi1wire_update = 1
-
-
-# or in YAML -
-# items/my.yaml
-
-someroom:
-     mytemperature:
-        name: my Name
-        type: num
-        visu_acl: ro
-        rpi1wire_name: rpi_temp1
-        sqlite: yes
-
-#or
-
-someroom:
-     mytemperature:
-        name: my Name
-        name: Wohnzimme Raumtemperatur
-        type: num
-        visu_acl: ro
-        rpi1wire_id: 28-0215018970ff
-        sqlite: yes
-
-rpi1wire:
-     update:
-        name: Update Sensor-List
-        type: bool
-        visu_acl: rw
-        rpi1wire_update: 1
-
-
diff --git a/rpi1wire/__init__.py b/rpi1wire/__init__.py deleted file mode 100644 index cd0b70592..000000000 --- a/rpi1wire/__init__.py +++ /dev/null @@ -1,217 +0,0 @@ -#!/usr/bin/env python3 -# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab -######################################################################### -# Copyright 2015 R.Rauer software@rrauer.de -######################################################################### -# This file is part of SmartHome.py. http://mknx.github.io/smarthome/ -# -# 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 . -######################################################################### - -import logging -import os - -class Rpi1Wire(): - def __init__(self, smarthome, dirname="/sys/bus/w1/devices",cycle = 120): - self.logger = logging.getLogger(__name__) - self.logger.info('Init rpi1wire') - self._sh = smarthome - self.dirname = dirname - self.cycle = cycle - self.sensors = {} - self._sensordaten = {} - self.values = {} - self.update = False - self.get_sensors() - self.anz_sensors = len(self.sensors) - self.logger.info("rpi1wire find {0} sensors".format(self.anz_sensors)) - self.logger.info(self.sensors) - self._sh.scheduler.add('rpi1wire', self.update_values, prio=3, cycle=self.cycle) - - - - def run(self): - self.alive = True - self.update_values() - self.update_basics() - - def update_basics(self): - anz = self._sh.return_item("rpi1wire.sensors") - ids = self._sh.return_item("rpi1wire.sensor_list") - if anz != None: - anz(int(self.anz_sensors),'rpi1wire') - self.logger.debug("rpi1wire-item sensors value = {0}".format(self.anz_sensors)) - if ids != None: - ids(str(self.sensors),'rpi1wire') - self.logger.debug("rpi1wire-item sensor_list value = {0}".format(self.sensors)) - - def stop(self): - self.alive = False - - def parse_item(self, item): - if 'rpi1wire_update' in item.conf: - ad=item.conf['rpi1wire_update'] - return self.update_item - if 'rpi1wire_id' not in item.conf: - if 'rpi1wire_name' not in item.conf: - return None - if 'rpi1wire_unit' not in item.conf: - self.logger.warning("rpi1wire_unit for {0} not defined".format(item.id())) - return None - not_found = False - if 'rpi1wire_id'in item.conf: - addr = item.conf['rpi1wire_id'] - try: - for sn, sid in self.sensors.items(): - if sid == item.conf['rpi1wire_id']: - name = sn - break - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_id'])) - not_found = True - else: - if 'rpi1wire_name'in item.conf: - name = item.conf['rpi1wire_name'] - try: - addr = self.sensors[item.conf['rpi1wire_name']] - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_name'])) - not_found = True - if not_found == False: - self._sensordaten[addr]['item'] = item - - def parse_logic(self, logic): - pass - - def update_item(self, item, caller=None, source=None, dest=None): - if self.update == True: - return None - if 'rpi1wire_update' in item.conf: - self.logger.info("rpi1wire_update wurde angefordert") - self.update_sensors() - return None - if caller != 'plugin': - self.logger.info("update item: {0}".format(item.id())) - - def update_values(self): - for sensor in self.sensors: - id = self.sensors[sensor] - value = self.getvalue(id) - #if value != 99999: - text = sensor +"=" + sensor[0] +": " + str(round(value/float(1000),1)) + " (" + str(value)+")" - self.logger.debug(text) - self.values[sensor] = round(value/float(1000),1) - try: - rpix = self._sensordaten[id] - temp = rpix['item'] - temp(round(value/float(1000),1), "rpi1wire") - self._sensordaten[id]['value'] = round(value/float(1000),1) - except: - self.logger.info("sensor {0} has no item".format(id)) - - def get_sensors(self): - objects = self.folder_objects(self.dirname) - i=1 - for sensor in objects: - if 'w1_bus' in sensor: - continue - typ = sensor.rsplit("-",1) - if typ[0] in ['10', '22', '28']: - value = self.getvalue(sensor) - if value == 99999: - self.logger.warning("rpi1wire {0} - has no value".format(sensor)) - else: - text = "rpi_temp"+str(i)+"=" + sensor +": " + str(round(value/float(1000),1)) + " (" + str(value)+")" - self.logger.info(text) - self.sensors["rpi_temp"+str(i)] = sensor - self.values["rpi_temp"+str(i)] = round(value/float(1000),1) - self._sensordaten[sensor]= {'name' : "rpi_temp"+str(i), 'value' : round(value/float(1000),1)} - i+=1 - - def folder_objects(self, dirname, otype="all"): - if (os.path.exists(dirname) == False or - os.path.isdir(dirname) == False or - os.access(dirname, os.R_OK) == False): - return False - else: - objects = os.listdir(dirname) - result = [] - for objectname in objects: - objectpath = dirname + "/" + objectname - if (otype == "all" or - (otype == "dir" and os.path.isdir(objectpath) == True) or - (otype == "file" and os.path.isfile(objectpath) == True) or - (otype == "link" and os.path.islink(objectpath) == True)): - result.append(objectname) - result.sort() - return result - - - def getvalue(self, id): - try: - mytemp = '' - filename = 'w1_slave' - f = open('/' + self.dirname + '/' + id + '/' + filename, 'r') - line = f.readline() # read 1st line - crc = line.rsplit(' ',1) - crc = crc[1].replace('\n', '') - if crc=='YES': - line = f.readline() # read 2nd line - mytemp = line.rsplit('t=',1) - else: - self.logger.warning("rpi1wire {0} - return no value".format(id)) - mytemp = '99999' - f.close() - return int(mytemp[1]) - except: - self.logger.warning("can not read sensor {}".format(id)) - return 99999 - - def update_sensors(self): - self.update = True - self.sensors = {} - self.anz_sensors = 0 - self.get_sensors() - self.anz_sensors = len(self.sensors) - self.search_item() - self.update_basics() - self.update_values() - upd = self._sh.return_item("rpi1wire.update") - if upd != None: - upd(False,'rpi1wire') - self.logger.info("rpi1wire-item update value done, {0} sensors found".format(self.anz_sensors)) - self.update = False - - def search_item(self): - items = self._sh.return_items() - for item in items: - if 'rpi1wire_id'in item.conf: - addr = item.conf['rpi1wire_id'] - try: - for sn, sid in self.sensors.items(): - if sid == item.conf['rpi1wire_id']: - name = sn - self._sensordaten[addr]['item'] = item - break - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_id'])) - not_found = True - if 'rpi1wire_name'in item.conf: - name = item.conf['rpi1wire_name'] - try: - addr = self.sensors[item.conf['rpi1wire_name']] - self._sensordaten[addr]['item'] = item - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_name'])) - self.logger.info("{0} rpi1wire-items registriert".format(len(self._sensordaten)))