now with notify

This commit is contained in:
Remy Moll 2023-11-21 23:45:29 +01:00
parent 3d27a0ee04
commit 58d318faee
4 changed files with 51 additions and 9 deletions

View File

@ -10,6 +10,7 @@
service_target_dir: /etc/systemd/system/
# adapt to taste
own_image_percent: 90
recipient: "???"
tasks:
- name: Pull the latest version of the code

View File

@ -6,8 +6,11 @@ Type=oneshot
User={{ ansible_user }}
WorkingDirectory={{ code_dest }}
ExecStart=python main.py
Environment="OWN_IMAGE_PERCENT={{ own_image_percent }}"
Environment="OWN_IMAGE_PERCENT={{ own_image_percent }}"#
Environment="RECIPIENT={{ recipient }}"
[Install]
WantedBy=multi-user.target
# this ensures that the service is started after the network is up (@reboot)

View File

@ -1,7 +1,9 @@
import sys
from image_convert import ImageShrink
from get.combined import ImageGetCombined
from get.template import ImageGetException
from image_show import ImageShow
import notify
if len(sys.argv) == 2 and sys.argv[1] == "test":
print("Running test")
@ -20,11 +22,21 @@ if "reduce" in sys.argv:
print("Enabling color reduction")
shrink_kwargs["reduce_colors"] = True
try:
getter = ImageGetCombined()
converter = ImageShrink(**shrink_kwargs)
shower = ImageShow()
except Exception as e:
print("Failed to initialize")
notify.notify_status("Failed to initialize")
raise e
getter = ImageGetCombined()
converter = ImageShrink(**shrink_kwargs)
shower = ImageShow()
image = getter.get_random_image()
image = converter.convert(image)
shower.show_image(image)
try:
image = getter.get_random_image()
image = converter.convert(image)
shower.show_image(image)
notify.notify_status("Success")
except ImageGetException as e:
print("Failed to get image")
notify.notify_status(f"Failed to get image: {e}")
raise e

26
src/notify.py Normal file
View File

@ -0,0 +1,26 @@
import httpx as h
import os
import socket
RECIPIENT = os.getenv("RECIPIENT", "DEV")
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
s.connect(('8.8.8.8', 80))
(addr, port) = s.getsockname()
IPS = addr
def notify_status(status):
data = f"Status: {status}\nIP: {IPS}"
headers = {
"Title" : f"Eink - {RECIPIENT}",
# "Click": "https://home.nest.com/",
# "Attach": "https://nest.com/view/yAxkasd.jpg",
# "Actions": "http, Open door, https://api.nest.com/open/yAxkasd, clear=true",
# "Email": "phil@example.com"
}
h.post(
"https://ntfy.kluster.moll.re/eink",
data=data,
headers=headers
)