notifications upon start/pause/finish of print
-
@jay_s_uk If you will open releases page it should be there(v3) in about 10-15 minutes, it's building as we speak.
Brief instructions in the readme. -
Hi all. I've been using this for quite some time and it has always been very reliable. Unfortunately, the API response format has changed (I noticed this in RRF v3.2beta4). I have fixed the problem, but I don't have the time right now to make it generic and support both the old and new versions of the firmware.
@Torin I have submitted a merge request.
If anyone has this problem, you can get my fork.
-
Merged Cheers dude!
-
Bonjour,
Je rencontre un problème avec reprap notify :
"Error parsing JSON: json: cannot unmarshal array into Go struct field .fanRPM of type int"
J'ai une duet 2 wifi en 1.04, et j'utilise RRF 3.2.1.J'aimerais beaucoup pouvoir recevoir un email en fin d'impression...
Merci pour votre aide.
-
@scumdead Can you give it a go with new release?
https://gitlab.com/Toriniasty/reprap_notify/-/releases/v5Also could you please write in english, I only understood what you've said because of the error in the post. Hope it will be all good now.
Also added re-notify feature.
-
Thanks for the answer, Iβm testing this day, and tell you if it works.
Sorry for my poor english. -
This would be cool as a plugin
-
It works perfectly, thank you very much.
(Linux amd64 version) -
@LB If you're talking about renotification then it is already there
-
-
@LB said in notifications upon start/pause/finish of print:
Do I have to download something and import it or how would it work?
Ah. Okey. To be fair, I haven't seen plugins functionality and I'm not sure how it is supposed to work. Maybe one day I will have a look and see if there's any possibility.... Anyhow, to make the notifier work just download one file from release page matching your system that's running, configure it via example yaml file and start it.
-
@Torin Can you provide a little guidance on the Slack integration setup?
I have created a workflow and successfully posted to a channel, however I'm not able to determine which variable names to use to extract information from the web request. Slack doesn't provide many details for troubleshooting.
The workflow completes successfully with a single variable named "text", but this appears to be empty. Do I need to reconfigure the contents of notifications.go to eliminate the nested json (slack docs say they aren't supported for variables)?
if viper.GetBool(`notifications.slack.enabled`) && viper.Get(`notifications.slack.webhookurl`) != `` && contains(returnStatus(status.Status), viper.GetStringSlice(`notifications.pushover.when`)) { go func(messageText string, messageTitle string) { log.Printf("Sending slack message\n") message := slackRequestBody{ Attachments: []attachment{{ Title: messageTitle, Text: messageText, Color: "good", }, }, } sendSlackNotification(message) }(messageTitle, messageText) }
Also seems like "viper.GetStringSlice" should refer to notifications.slack.when, correct?
-
@mct82 Hey, that's a good spot with if condition. I found the same problem in email and telegram too ... So if you will head down to releases page there should be a new one with the fix.
In regards to Slack. I can't remember, but it should just work ootb when you change enable do true and put webhook url in. If you will still struggle let me know, I will try to see and check it during week.
-
@Torin Thanks for the quick update!
I documented a little of my setup to help with troubleshooting, maybe something has changed on Slack's end?
Here is my webhook setup:
And here is the next action in the workflow:
This is the result posted to the channel:
Is there a way to post to a channel from a webhook w/o using the workflow tool? Maybe that's something I missed....
-
Actually just tested it quickly. It works literally as you did. Just copy paste slack webhook url, put it in config and it should just appear.
text is not needed, as it is send via attachments in slack:
https://api.slack.com/reference/messaging/attachments -
@Torin Well it works perfectly when set up properly
So to change the content of the attachment, I just need to update these sections and recompile?
func sendNotification(status rrStatusType, fileinfo rrFileinfoType) { messageTitle := `Your friendly 3d printer status` messageText := fmt.Sprintf(`Status: %v, print file name: %v, print time: %v`, returnStatus(status.Status), fileinfo.FileName, niceTime(fileinfo.PrintDuration)) if status.TimesLeft.File != 0 && status.Status == `P` { messageText = fmt.Sprintf(`, print time left: %v`, niceTime(int(status.TimesLeft.File))) }
and
if viper.GetBool(`notifications.slack.enabled`) && viper.Get(`notifications.slack.webhookurl`) != `` && contains(returnStatus(status.Status), viper.GetStringSlice(`notifications.slack.when`)) { go func(messageText string, messageTitle string) { log.Printf("Sending slack message\n") message := slackRequestBody{ Attachments: []attachment{{ Title: messageTitle, Text: messageText, Color: "good", }, }, } sendSlackNotification(message) }(messageTitle, messageText) }
Thank you for putting this together!
-
@Torin said in notifications upon start/pause/finish of print:
Also added re-notify feature.
The re-notify feature does not appear to be working under windows. I receive the first notification for any new status, but no subsequent updates after status changes. I see a reference to time.Now().Unix() in the main.go source, could this be part of the issue?
-
@mct82 Basically yeah, you would also need to update struct for json payload.
In regards to windows, time.Now().Unix() should without any problem on windows. That's something I would need to check later during the week. but feel free to look around, add some timers maybe and logging -
@Torin I'm not a programmer and I have never used the Go language, so I don't think you want me mucking up your code. I just don't have time to learn a new language right now, so I will have to wait for someone who knows what they're doing to do it properly.
I will mention that if I were to modify this tool in any way, it would be to pull the message content out so it can be edited w/o re-compiling. Perhaps read in a message template for each status (print, pause, finish), or a single template with multiple sections. It would be really powerful to be able to grab additional fields from the OM to include in (or conditionally modify) push notifications.
-
@mct82 Hey, so I got a bit of spare time today and I've looked into it. Renotifications didn't work because I forgot to add two more if's.
I've created new release here: https://gitlab.com/Toriniasty/reprap_notify/-/releases/v7