Updated Script Cookbook (markdown)

Michael Ingraham 2019-07-28 12:24:01 -04:00
parent fed6d91ebe
commit c727fc29d3
1 changed files with 247 additions and 9 deletions

@ -1,5 +1,19 @@
***example script*** (actually this code is too large) <a id="top"></a>
meant to show some of the possibilities - [Scripting Language Example](Scripting-Language-Example)
- [Log Sensor](Log-Sensor)
- [ePaper 29 Display with SGP30 and BME280](ePaper-29-Display-with-SGP30-and-BME280)
- [ILI 9488 Color LCD Display with BMP280 and VL5310X](ILI-9488-Color-LCD-Display-with-BMP280-and-VL5310X)
- [Multiple IR Receiver Synchronization](Multiple-IR-Receiver-Synchronization)
- [Fast Polling](Fast-Polling)
- [Switching By Recognizing Mains Power Frequency](Switching-By-Recognizing-Mains-Power-Frequency)
[Back To Top](#top)
------------------------------------------------------------------------------
#### Scripting Language Example
Actually this code is too large. This is meant to show some of the possibilities
**\>D** **\>D**
; define all vars here ; define all vars here
@ -276,7 +290,12 @@ col=hn(255)+hn(0)+hn(0)
**\>R** **\>R**
=\>print restarting now =\>print restarting now
**a log sensor example**
[Back To Top](#top)
------------------------------------------------------------------------------
#### Log Sensor
; define all vars here ; define all vars here
; reserve large strings ; reserve large strings
**\>D** 48 **\>D** 48
@ -336,9 +355,11 @@ endif
**\>R** **\>R**
[Back To Top](#top)
**a real example** ------------------------------------------------------------------------------
epaper 29 with sgp30 and bme280
#### ePaper 29 Display with SGP30 and BME280
some vars are set from iobroker some vars are set from iobroker
DisplayText substituted to save script space DisplayText substituted to save script space
**\>D** **\>D**
@ -404,10 +425,15 @@ endif
**\>R** **\>R**
**another real example**
ILI 9488 color LCD Display shows various energy graphs [Back To Top](#top)
------------------------------------------------------------------------------
#### ILI 9488 Color LCD Display with BMP280 and VL5310X
shows various energy graphs
display switches on and off with proximity sensor display switches on and off with proximity sensor
BMP280 and vl5310x
some vars are set from iobroker some vars are set from iobroker
**>D** **>D**
@ -494,3 +520,215 @@ endif
**>E** **>E**
**>R** **>R**
[Back To Top](#top)
------------------------------------------------------------------------------
#### Multiple IR Receiver Synchronization
since i own a magic home with ir receiver i made a script to show how it works
i have 2 magic home devices that should be synchronized so i send the commands also to a second magic home via websend
; define (expand string section to 25 chars)
>D 25
istr=""
ws="websend [192.168.178.84]"
; event section
>E
; get ir data
istr=IrReceived#Data
; on
if istr=="0x00F7C03F"
then
=>wakeup
=>%ws% wakeup
endif
; off
if istr=="0x00F740BF"
then
=>power1 0
=>%ws% power1 0
endif
;white
if istr=="0x00F7E01F"
then
=>color 000000ff
=>%ws% color 000000ff
endif
;red
if istr=="0x00F720DF"
then
=>color ff000000
=>%ws% color ff000000
endif
;green
if istr=="0x00F7A05F"
then
=>color 00ff0000
=>%ws% color 00ff0000
endif
;blue
if istr=="0x00F7609F"
then
=>color 0000ff00
=>%ws% color 0000ff00
endif
; dimmer up
if istr=="0x00F700FF"
then
=>dimmer +
=>%ws% dimmer +
endif
;dimmer down
if istr=="0x00F7807F"
then
=>dimmer -
=>%ws% dimmer -
endif
istr=""
[Back To Top](#top)
------------------------------------------------------------------------------
#### Fast Polling
; expand strings to hold websend
>D 25
sw=0
ws="websend [192.168.178.86]"
timer=0
hold=0
toggle=0
>B
; gpio 5 button input
spinm(5,0)
; fast section 100ms
>F
sw=pin[5]
; 100 ms timer
timer+=1
; 3 seconds long press
; below 0,5 short press
if sw==0
and timer>5
and timer<30
then
; short press
;=>print short press
toggle^=1
=>%ws% power1 %toggle%
endif
if sw>0
then
;pressed
if timer>30
then
; hold
hold=1
;=>print hold=%timer%
if toggle>0
then
=>%ws% dimmer +
else
=>%ws% dimmer -
endif
endif
else
timer=0
hold=0
endif
[Back To Top](#top)
------------------------------------------------------------------------------
#### Switching By Recognizing Mains Power Frequency
[#6085 (comment)](../issues/6085#issuecomment-512353010)
>D
sw1=0
sw2=0
cnt1=0
cnt2=0
timer1=0
timer2=0
toggle1=0
toggle2=0
>B
=>print "WiFi 2-Gang Switch Script"
>F
; Counter1/2 and Relay1/2 configured in template
cnt1=pc[1]
cnt2=pc[2]
if chg[cnt1]>0
then
; counter1 has changed, switch is on
sw1=1
else
; no change switch is off
sw1=0
endif
if chg[cnt2]>0
then
; counter2 has changed, switch is on
sw2=1
else
; no change switch is off
sw2=0
endif
; 100 ms timer
timer1+=1
timer2+=1
if sw1==0
and timer1>2
and timer1<30
then
;=>print short press1
toggle1^=1
=>Power1 %toggle1%
endif
if sw1==0
then
timer1=0
endif
if sw2==0
and timer2>2
and timer2<30
then
;=>print short press2
toggle2^=1
=>Power2 %toggle2%
endif
if sw2==0
then
timer2=0
endif
[Back To Top](#top)
------------------------------------------------------------------------------