-
Notifications
You must be signed in to change notification settings - Fork 0
/
rf433.py
144 lines (133 loc) · 5.27 KB
/
rf433.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Aug 8 06:32:20 2020
@author: alexander
"""
#%% rf433
from pins import RF433
from machine import Pin
from time import sleep
#reseting 14 pin > othersiwe it is jamming 433MHz
p = Pin(RF433 , Pin.OUT)
p.low()
previous_color = 'off'
#%% rf433
#reseting 14 pin > othersiwe it is jamming 433MHz
p = Pin(RF433 , Pin.OUT)
p.low()
def rf_states(value):
"call for latest states"
global RF_positions
current = previous_color
color(['magneta',''])
color([current,''])
return RF_positions
def rf433(value):
"""wrapper for _rf433
[group,what]
returns [{type:[status::bool, message::str}]
"""
global RF_positions
print ('rf warapper: value: ' + str(value))
com = [1 if value[1] in [1, '1','on','ON','True','true'] else 0][0]
if value[0] == 'light':
res = [_rf433([5,com]) ]
elif value[0] == 'heater':
res = [_rf433([12,com])]
elif value[0] == 'coffee':
res = [_rf433([11,com])]
elif value[0] == 'all':
res = [_rf433([v,com]) for v in [5,11,12,21]]
elif value[0] == 'dimlight':
# for Philips lamps > ['dimlight', 0] for DIM / ['dimlight', 1] for BRIGHT
res = []
if com == 0: # bright to dim
res.append(_rf433([5,0])); sleep (0.5)
res.append(_rf433([5,1])); sleep (0.5) # now mode 2
res.append(_rf433([5,0])); sleep (0.5)
res.append(_rf433([5,1])); sleep (0.5) # now mode 3 (dim)
else:
res.append(_rf433([5,0])); sleep (0.5)
res.append(_rf433([5,1])); sleep (0.5) # now mode 1
else:
res = [_rf433([value[0],com])]
RF_positions[value[0]] = com
# ret= str(value[0]) +'<br>' + '<br>'.join(res)
return [RF_positions, res] # updating current state > will be [1/0,'string message']
def _rf433(value):
"""[signal, OnOff]
: 150 - 300 delay good, pin 14 (D5), 5V """
print ('_rf433' + str(value))
pin = RF433 #int(value[1])
timeDelay = 200 / 1000000 #float(value[0])/1000000 #TODO: this might change
signal = value[0]
OnOff = int(value[1])
signals= {'1' : [
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,2,4,4,4,2,2,2,2,2,4,4,2,3],
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,4,4,4,4,2,2,2,2,4,2,4,2,3]
],
'2': [
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,2,2,4,4,2,2,2,2,2,2,2,4,3],
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,4,2,4,4,2,2,2,2,4,4,4,2,3]
],
'3': [
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,2,4,2,4,2,2,2,2,2,4,2,4,3],
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,4,4,2,4,2,2,2,2,4,2,2,4,3]
],
'4': [
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,2,4,4,2,2,2,2,2,2,4,4,4,3],
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,4,4,4,2,2,2,2,2,4,2,4,4,3]
],
# for all 1-4
'5': [
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,4,2,2,2,2,2,2,2,4,4,2,2,3],
[2,4,2,4,2,2,2,2,4,2,4,2,4,4,2,4,2,2,2,2,2,4,2,2,2,2,2,2,2,4,2,2,3]
],
'11': [
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,4,4,2,2,2,2,2,4,2,4,4,2,3],
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,4,4,4,2,2,2,2,4,2,4,2,2,3]
],
'12': [
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,4,2,2,2,2,2,2,4,2,2,4,2,3],
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,4,2,4,2,2,2,2,4,2,2,2,2,3]
],
'13': [
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,2,4,2,2,2,2,2,4,4,2,4,2,3],
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,2,4,4,2,2,2,2,4,4,2,2,2,3]
],
'14': [
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,2,4,4,2,2,2,2,2,2,2,4,4,2,3],
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,2,4,4,4,2,2,2,2,2,2,4,2,2,3]
],
'99': [ # all 4
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,4,4,4,2,2,3],
[4,2,2,4,4,2,4,2,4,4,4,2,2,2,2,2,2,2,2,2,2,4,2,2,2,2,2,2,2,2,2,4,2,3]
],
# # another module > not used.
# '21': [
# [1,4,1,4,1,4,1,4,1,1,1,1,1,1,1,1,1,1,1,4,4,4,1,1,4,1,1,4,1,1,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,6],
# [1,4,1,4,1,4,1,4,1,1,1,1,1,1,1,1,1,1,1,4,4,4,1,1,4,1,1,4,1,1,4,4,4,4,4,1,1,1,1,4,4,4,4,4,4,4,4,6]
# ]
}
mapping = {1 : (3,3), 2 : (3,7), 3: (3,92), 4: (7,3), 5 : (7,7), 6 : (7,92)}
p = Pin(pin , Pin.OUT)
current = previous_color
color(['blue',''])
#led = Pin(2, Pin.OUT)
try:
for n in range(0,8):
for i in signals[str(signal)][OnOff]:
p.high()
#led.high()
sleep((mapping[i][0] * timeDelay))
p.low()
#led.low()
sleep((mapping[i][1] * timeDelay))
#led.high()
sleep(0.2)
color([current,''])
return str('signal {} sent to {}'.format(OnOff,signal))
except Exception as e:
print (str(e))
return str(e)