Hi,
I would connect the Temperature sensor Tsic506 on my ESP32 board.
Does someone has already ported the zacwire protocol or successfull connect a Tsicxxx Sensor via pure Micropython?
Thanks
Chris
Zacwire - Tsic506
Re: Zacwire - Tsic506
Hi,
Im wondering why the first code does'nt return a correct result but the second does
The code is runnung on an ESP32.
Any ideas?
more about zagwire
https://www.mikrocontroller.net/attachm ... Oct-06.pdf
temp = Temperatur(26)
temp.sensor_on()
print(temp.get_temperatur())
content of self._tempvalue
[1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1...
but is must be a sequence of..
content of tempvalue
[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0..
thank you
chris
Im wondering why the first code does'nt return a correct result but the second does
The code is runnung on an ESP32.
Any ideas?
more about zagwire
https://www.mikrocontroller.net/attachm ... Oct-06.pdf
Code: Select all
import machine
MINTEMP = -10
MAXTEMP = 60
temperatur = []
tempvalue = []
def get_temperatur():
if temperatur:
tempstring = int("".join(str(val) for val in temperatur), 2)
return round(float(tempstring / 2047 * (MAXTEMP - MINTEMP)) - MINTEMP, 1)
def callback(p):
value = p.value()
tempvalue.append(value)
if len(tempvalue) == 6 and tempvalue != valid:
tempvalue.pop(0)
if len(tempvalue) == 20:
temperatur.clear()
temperatur.extend(tempvalue[1:9] + tempvalue[11:19])
tempvalue.clear()
pin = machine.Pin(26, machine.Pin.IN, machine.Pin.PULL_UP)
pin.irq(trigger=machine.Pin.IRQ_FALLING, handler=callback)
Code: Select all
import machine
MINTEMP = -10
MAXTEMP = 60
class Temperatur(object):
""" """
_valid = [1, 0, 0, 0, 0, 0]
def __init__(self, pin, celsius=True):
""" """
self._pin = machine.Pin(pin, machine.Pin.IN, machine.Pin.PULL_UP)
self._celsius = celsius
self._tempvalue = []
self._temperatur = []
def _callback(self, p):
value = p.value()
if not len(self._tempvalue) and not value:
return
self._verify(value)
def _verify(self, value):
""" """
tempvalue = self._tempvalue
tmp_len = len(tempvalue)
if tmp_len == 6 and tempvalue != self._valid:
tempvalue.pop(0)
if tmp_len == 20:
self._temperatur.clear()
self._temperatur.extend(tempvalue[1:9] + tempvalue[11:19])
tempvalue.clear()
def sensor_on(self):
self._pin.irq(trigger=machine.Pin.IRQ_FALLING, handler=self._callback)
def sensor_off(self):
pass
def get_temperatur(self):
if self._temperatur:
print(self._temperatur)
tempstring = int("".join(str(val) for val in self._temperatur), 2)
return round(float(tempstring / 2047 * (MAXTEMP - MINTEMP)) - MINTEMP, 1)
temp.sensor_on()
print(temp.get_temperatur())
content of self._tempvalue
[1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1...
but is must be a sequence of..
content of tempvalue
[1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1,
1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0..
thank you
chris